From ec317cdc3d96fc98ae87ebd74fac5367d87d16eb Mon Sep 17 00:00:00 2001 From: troyeguo <13820674+troyeguo@users.noreply.github.com> Date: Sat, 27 Sep 2025 11:02:22 +0800 Subject: [PATCH] Remove unnecessary right padding from text input in cardList CSS --- main.js | 24 +++++++++++++++++++++- src/assets/lib/kookit-extra-browser.min.js | 2 +- src/assets/lib/kookit-extra.min.mjs | 2 +- src/containers/lists/cardList/cardList.css | 1 - 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index 21dbdcc9..13fdb876 100644 --- a/main.js +++ b/main.js @@ -20,8 +20,11 @@ const dirPath = path.join(configDir, "uploads"); const packageJson = require("./package.json"); let mainWin; let readerWindow; +let readerWindowList = [] let urlWindow; let mainView; +//multi tab +// let mainViewList = [] let chatWindow; let googlePickerView; let dbConnection = {}; @@ -275,10 +278,16 @@ const createMainWin = () => { if (isAutoFullscreen === "yes") { + if (readerWindow) { + readerWindowList.push(readerWindow) + } readerWindow = new BrowserWindow(options); readerWindow.loadURL(url); readerWindow.maximize(); } else { + if (readerWindow) { + readerWindowList.push(readerWindow) + } readerWindow = new BrowserWindow({ ...options, width: parseInt(store.get("windowWidth") || 1050), @@ -603,7 +612,16 @@ const createMainWin = () => { event.returnvalue = true; }); ipcMain.handle("reload-reader", (event, arg) => { - if (readerWindow) { + console.log("reload-reader", readerWindowList.length); + if (readerWindowList.length > 0) { + readerWindowList.forEach(win => { + console.log("reload-reader win", win, !win.isDestroyed()); + if (win && !win.isDestroyed()) { + win.reload(); + } + }) + } + if (readerWindow && !readerWindow.isDestroyed()) { readerWindow.reload(); } }); @@ -774,7 +792,11 @@ const createMainWin = () => { "isMergeWord", store.get("isMergeWord") !== "yes" ? "yes" : "no" ); + if (readerWindow) { + readerWindowList.push(readerWindow) + } readerWindow = new BrowserWindow(options); + readerWindow.loadURL(store.get("url")); readerWindow.on("close", (event) => { if (!readerWindow.isDestroyed()) { diff --git a/src/assets/lib/kookit-extra-browser.min.js b/src/assets/lib/kookit-extra-browser.min.js index 758ca6fb..87b55b56 100644 --- a/src/assets/lib/kookit-extra-browser.min.js +++ b/src/assets/lib/kookit-extra-browser.min.js @@ -1 +1 @@ -import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={publicUrl:"https://api.960960.xyz",cloudUrl:"https://cloud.960960.xyz",cloudCNUrl:"https://cloud.koodoreader.cn",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class T{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends T{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const i=r.substring(0,r.lastIndexOf("/"));if(i){if(!(yield this.ensureDirectoryExists(i)))return console.error("Failed to create directory:",i),!1}const o=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${r}`,overwrite:!0}});if(200!==o.status)return console.error("Error getting upload URL:",o),!1;const s=o.data.href;let a=r.split("/").pop()||"",c=new File([t],a,{lastModified:(new Date).getTime(),type:t.type});const u=yield e.put(s,c,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${t}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const i=n.data.href,o=yield e({url:i,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class _ extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class P{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class O extends P{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const s=this.baseUrl+":/"+r+":/createUploadSession",a=yield e.post(s,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let c=o.size;const u=o.type,d=a.data.uploadUrl,l=yield e.put(d,o,{headers:{"Content-Type":u,"Content-Range":`bytes 0-${c-1}/${c}`},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file download:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=`${this.baseUrl}:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Z=J;var Y,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Y||(Y={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Y.MD5,re=Y.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Ae=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Ae[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Ae[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Ae[r]=t}xe["+"]=62,Ae[62]="+",xe["/"]=63,Ae[63]="/";const Te=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),_e=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function Pe(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Oe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Oe.mutate(Te(e)):Oe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Oe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Pe(e):_e(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Pe(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return _e(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.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 e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Pe;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Oe.mutate(e);if(!e)return Oe.mutate(new Uint8Array);const r=t.streamCollector(e);return Oe.mutate(await r)};function Ze(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ye(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ze(e))).join("/"):Ze(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={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},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},At=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),Tt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||At(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(Pt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!_t.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const _t=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Pt{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Ot(t),new Pt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ot(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ot(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await Tt(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await Tt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await Tt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Zt=e=>er(e,16),Yt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Zt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Or(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Pr(d)),p},yr=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$/),vr=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$/),br=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})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Or(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Or(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Tr(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),_r(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Or(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Ar=[31,28,31,30,31,30,31,31,30,31,30,31],Tr=(e,t,r)=>{let n=Ar[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Yt("string"==typeof e?sr(e):e))(Or(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},_r=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),Pr=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Or=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Zr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Yr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":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",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;var wn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}};const kn=tn;function Sn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&xn(e,t))t+=7,[entityName,val,t]=Sn(e,t+1),-1===val.indexOf("&")&&(r[Rn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&An(e,t))t+=8;else if(i&&Tn(e,t))t+=8;else if(i&&Cn(e,t))t+=9;else{if(!En)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Pn=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(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);const In={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const Mn=tn,Nn=wn,Fn=_n,$n=function(e,t={}){if(t=Object.assign({},In,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if(t.hex&&Pn.test(r))return Number.parseInt(r,16);{const n=On.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);const a=n[4]||n[6];if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;{const n=Number(r),c=""+n;return-1!==c.search(/[eE]/)||a?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===c&&""===s||c===s||i&&c==="-"+s?n:e:o?s===c||i+s===c?n:e:r===c||r===i+c?n:e}}return e}};function Un(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Jn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Jn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Dn(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Bn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function zn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=Mn.getAllMatches(e,Bn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Qn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Nn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Vn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Fn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Vn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Qn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Nn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Nn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Nn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function qn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const Wn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Hn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Kn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Vn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Qn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Vn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Vn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Vn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Qn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Jn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&$n(e,r)}return Mn.isExist(e)?e:""}var Xn=class{constructor(e){this.options=e,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:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=Un,this.parseXml=jn,this.parseTextData=Ln,this.resolveNameSpace=Dn,this.buildAttributesMap=zn,this.isItStopNode=Kn,this.replaceEntitiesValue=Wn,this.readStopNodeData=Gn,this.saveTextToParentTag=Hn,this.addChild=qn}},Zn={};function Yn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function ei(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=di(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${di(a[":@"],t)}`,h=ci(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ui(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ci(e,t,"",r)},pi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},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};function gi(e){this.options=Object.assign({},pi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=vi),this.processTextOrObjNode=mi,this.options.format?(this.indentate=yi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function mi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function yi(e){return this.options.indentBy.repeat(e)}function vi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}gi.prototype.build=function(e){return this.options.preserveOrder?fi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},gi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},gi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new bi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),ki=async(e,t)=>{const r=await wi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},Si=[Y.CRC32,Y.CRC32C,Y.SHA1,Y.SHA256],Ei=[Y.SHA256,Y.SHA1,Y.CRC32,Y.CRC32C],xi=e=>e===Y.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,Ai=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!At(e);function Ti(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ci(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function _i(e){return e instanceof Uint8Array?e:"string"==typeof e?Ri(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Pi(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Oi(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Ii(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Fi[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Fi=Ii([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]);function $i(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ui(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Bi[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Bi=Ii([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]);const zi=(e,t)=>({[Y.MD5]:t.md5,[Y.CRC32]:Li,[Y.CRC32C]:Mi,[Y.SHA1]:t.sha1,[Y.SHA256]:t.sha256}[e]),ji=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},qi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},Wi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!Si.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${Si}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Y.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Y.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Y.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Y.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=xi(f),r=zi(f,e);if(Ai(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await ji(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Hi=(e=[])=>{const t=[];for(const r of Ei)e.includes(r)&&Si.includes(r)&&t.push(r);return t};function Ki(e){return new Blob([e]).stream()}const Vi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await ji(t,e)),Qi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Gi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Hi(d).every((e=>{const t=xi(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=Ai(a.body);i&&(c=await e.streamCollector(a.body),a.body=Ki(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Hi(r),{body:i,headers:o}=e;for(const r of n){const n=xi(r),s=o[n];if(s){const o=zi(r,t),{base64Encoder:a}=t;if(Ai(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Vi(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Ki(c))}return s},Ji=(e,t)=>({applyToStack:r=>{r.add(Wi(e,t),qi),r.addRelativeTo(Gi(e,t),Qi)}});const Xi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Zi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Xi)}}),Yi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},eo="X-Amzn-Trace-Id",to={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},ro=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(eo))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[eo]=o),t({...r,request:n})})(e),to)}});const no={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},io=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="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 t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),no)}}),oo={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const so={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},ao=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),so),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),oo)}}),co={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},uo=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),co)}});class lo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+lo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new ho(Promise.resolve(e)))}))),e})):n.set(r,new ho(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var po;fo.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(po||(po={}));const go="X-Amz-S3session-Token",mo=go.toLowerCase();class yo extends Nt{async signWithCredentials(e,t,r){const n=vo(t);e.headers[mo]=t.sessionToken;return bo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=vo(t);delete e.headers[mo],e.headers[go]=t.sessionToken,e.query=e.query??{},e.query[go]=t.sessionToken;return bo(this,n),this.presign(e,r)}}function vo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function bo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const wo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},ko=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[mo]=i.sessionToken)}}}return t(n)})(e),wo)}}),So=e=>e=>{throw e},Eo=(e,t)=>{},xo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||So)(o));return(a.successHandler||Eo)(u.response,o),u},Ao={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},To=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await Co(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&Ao[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Co=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Ro={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},_o=e=>({applyToStack:t=>{t.addRelativeTo(To(e),Ro)}});const Po={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Oo={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Io=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),Oo),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),Po)}});const Mo=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}$"),No=e=>Mo.test(e)||e.startsWith("[")&&e.endsWith("]"),Fo=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),$o=(e,t=!1)=>{if(!t)return Fo.test(e);const r=e.split(".");for(const e of r)if(!$o(e))return!1;return!0},Uo={},Lo="endpoints";function Do(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Do(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Do).join(", ")})`:JSON.stringify(e,null,2)}class Bo extends Error{constructor(e){super(e),this.name="EndpointError"}}const zo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Bo(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Bo(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Bo(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),jo={[B.HTTP]:80,[B.HTTPS]:443},qo={booleanEquals:(e,t)=>e===t,getAttr:zo,isSet:e=>null!=e,isValidHostLabel:$o,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=No(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${jo[c]}`)||"string"==typeof e&&e.includes(`${n}:${jo[c]}`)?`:${jo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},Wo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return Wo(e,r);if(e.fn)return Ko(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Bo(`'${t}': ${String(e)} is not a string, function or reference.`)},Ko=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Ho(e,"arg",r))),i=e.split(".");return i[0]in Uo&&null!=i[1]?Uo[i[0]][i[1]](...n):qo[e](...n)},Vo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Bo(`'${e}' is already defined in Reference Record.`);const n=Ko(t,r);return r.logger?.debug?.(`${Lo} evaluateCondition: ${Do(t)} = ${Do(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Qo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Vo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Lo} assign: ${i.name} := ${Do(i.value)}`))}return{result:!0,referenceRecord:r}},Go=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Ho(e,"Header value entry",t);if("string"!=typeof n)throw new Bo(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Jo=(e,t)=>{if(Array.isArray(e))return e.map((e=>Jo(e,t)));switch(typeof e){case"string":return Wo(e,t);case"object":if(null===e)throw new Bo(`Unexpected endpoint property: ${e}`);return Xo(e,t);case"boolean":return e;default:throw new Bo("Unexpected endpoint property type: "+typeof e)}},Xo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Jo(n,t)})),{}),Zo=(e,t)=>{const r=Ho(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Bo("Endpoint URL must be a string, got "+typeof r)},Yo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Lo} Resolving endpoint from template: ${Do(n)}`),{...null!=u&&{headers:Go(u,s)},...null!=c&&{properties:Xo(c,s)},url:Zo(a,s)}},es=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(i)throw new Bo(Ho(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},ts=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(i)return rs(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},rs=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Yo(r,t);if(e)return e}else if("error"===r.type)es(r,t);else{if("tree"!==r.type)throw new Bo(`Unknown endpoint rule: ${r}`);{const e=ts(r,t);if(e)return e}}throw new Bo("Rules evaluation failed")},ns=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!ns(t))return!1;return!0}return!!$o(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!No(e)))};let is={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"};const os={isVirtualHostableS3Bucket:ns,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=is;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};Uo.aws=os;const ss=/\d{12}\.ddb/;const as="user-agent",cs="x-amz-user-agent",us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,ds=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ls=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(hs)||[],a=(await e.defaultUserAgentProvider()).map(hs);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(ss)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(hs)||[],d=await e.userAgentAppId();d&&a.push(hs([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[cs]=o[cs]?`${o[as]} ${h}`:h),o[as]=l):o[cs]=l,t({...n,request:i})},hs=e=>{const t=e[0].split("/").map((e=>e.replace(us,"-"))).join("/"),r=e[1]?.replace(ds,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},fs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},ps=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),gs=e=>ps(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,ms="content-length";const ys={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},vs=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(ms))try{const t=r(e);n.headers={...n.headers,[ms]:String(t)}}catch(e){}}return e({...t,request:n})}),ys)}}),bs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,ws=/(\d+\.){3}\d+/,ks=/\.\./,Ss=e=>bs.test(e)&&!ws.test(e)&&!ks.test(e),Es=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},xs=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},As=async e=>{};const Ts=e=>{if("string"==typeof e)return Ts(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},Cs=e=>"object"==typeof e?"url"in e?Ts(e.url):e:Ts(e),Rs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await xs(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Es(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!Ss(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},_s=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await As(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Cs(e)))}const i=await Rs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},Ps={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(_s({config:e,instructions:t}),Ps)}});var Is;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Is||(Is={}));const Ms=Is.STANDARD,Ns=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Fs=["TimeoutError","RequestTimeout","RequestTimeoutException"],$s=[500,502,503,504],Us=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Ls=e=>429===e.$metadata?.httpStatusCode||Ns.includes(e.name)||1==e.$retryable?.throttling,Ds=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Fs.includes(e.name)||Us.includes(e?.code||"")||$s.includes(e.$metadata?.httpStatusCode||0);class Bs{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,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(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Bs.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Ls(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Bs.setTimeoutFn=setTimeout;const zs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class js{constructor(e){this.maxAttempts=e,this.mode=Is.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return zs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,zs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class qs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Is.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Bs,this.standardRetryStrategy=new js(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let Ws;const Hs=new Uint8Array(16);function Ks(){if(!Ws&&(Ws="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ws))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ws(Hs)}const Vs=[];for(let e=0;e<256;++e)Vs.push((e+256).toString(16).slice(1));var Qs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gs(e,t,r){if(Qs.randomUUID&&!t&&!e)return Qs.randomUUID();const n=(e=e||{}).random||(e.rng||Ks)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Vs[e[t+0]]+Vs[e[t+1]]+Vs[e[t+2]]+Vs[e[t+3]]+"-"+Vs[e[t+4]]+Vs[e[t+5]]+"-"+Vs[e[t+6]]+Vs[e[t+7]]+"-"+Vs[e[t+8]]+Vs[e[t+9]]+"-"+Vs[e[t+10]]+Vs[e[t+11]]+Vs[e[t+12]]+Vs[e[t+13]]+Vs[e[t+14]]+Vs[e[t+15]]}(n)}const Js=e=>e?.body instanceof ReadableStream,Xs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Zs=e=>{const t={error:e,errorType:Ys(e)},r=ra(e.$response);return r&&(t.retryAfterHint=r),t},Ys=e=>Ls(e)?"THROTTLING":Ds(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ds(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",ea={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ta=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Xs(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Gs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Zs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Js(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),ea)}}),ra=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},na=null;class ia{constructor(e){this.sigv4Signer=new yo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.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(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.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(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.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(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=na,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.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`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const oa="required",sa="type",aa="conditions",ca="fn",ua="argv",da="ref",la="assign",ha="url",fa="properties",pa="backend",ga="authSchemes",ma="disableDoubleEncoding",ya="signingName",va="signingRegion",ba="headers",wa="signingRegionSet",ka=!0,Sa="isSet",Ea="booleanEquals",xa="error",Aa="aws.partition",Ta="stringEquals",Ca="getAttr",Ra="name",_a="substring",Pa="bucketSuffix",Oa="parseURL",Ia="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ma="endpoint",Na="tree",Fa="aws.isVirtualHostableS3Bucket",$a="{url#scheme}://{Bucket}.{url#authority}{url#path}",Ua="not",La="{url#scheme}://{url#authority}{url#path}",Da="hardwareType",Ba="regionPrefix",za="bucketAliasSuffix",ja="outpostId",qa="isValidHostLabel",Wa="sigv4a",Ha="s3-outposts",Ka="s3",Va="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Qa="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Ga="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ja="aws.parseArn",Xa="bucketArn",Za="arnType",Ya="s3-object-lambda",ec="accesspoint",tc="accessPointName",rc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",nc="mrapPartition",ic="outpostType",oc="arnPrefix",sc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",cc="https://s3.{partitionResult#dnsSuffix}",uc={[oa]:!1,[sa]:"String"},dc={[oa]:!0,default:!1,[sa]:"Boolean"},lc={[oa]:!1,[sa]:"Boolean"},hc={[ca]:Ea,[ua]:[{[da]:"Accelerate"},!0]},fc={[ca]:Ea,[ua]:[{[da]:"UseFIPS"},!0]},pc={[ca]:Ea,[ua]:[{[da]:"UseDualStack"},!0]},gc={[ca]:Sa,[ua]:[{[da]:"Endpoint"}]},mc={[ca]:Aa,[ua]:[{[da]:"Region"}],[la]:"partitionResult"},yc={[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[{[da]:"partitionResult"},Ra]},"aws-cn"]},vc={[ca]:Sa,[ua]:[{[da]:"Bucket"}]},bc={[da]:"Bucket"},wc={[ca]:Oa,[ua]:[{[da]:"Endpoint"}],[la]:"url"},kc={[ca]:Ea,[ua]:[{[ca]:Ca,[ua]:[{[da]:"url"},"isIp"]},!0]},Sc={[da]:"url"},Ec={[ca]:"uriEncode",[ua]:[bc],[la]:"uri_encoded_bucket"},xc={[pa]:"S3Express",[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:"s3express",[va]:"{Region}"}]},Ac={},Tc={[ca]:Fa,[ua]:[bc,!1]},Cc={[xa]:"S3Express bucket name is not a valid virtual hostable name.",[sa]:xa},Rc={[pa]:"S3Express",[ga]:[{[ma]:!0,[Ra]:"sigv4-s3express",[ya]:"s3express",[va]:"{Region}"}]},_c={[ca]:Sa,[ua]:[{[da]:"UseS3ExpressControlEndpoint"}]},Pc={[ca]:Ea,[ua]:[{[da]:"UseS3ExpressControlEndpoint"},!0]},Oc={[ca]:Ua,[ua]:[gc]},Ic={[xa]:"Unrecognized S3Express bucket name format.",[sa]:xa},Mc={[ca]:Ua,[ua]:[vc]},Nc={[da]:Da},Fc={[aa]:[Oc],[xa]:"Expected a endpoint to be specified but no endpoint was found",[sa]:xa},$c={[ga]:[{[ma]:!0,[Ra]:Wa,[ya]:Ha,[wa]:["*"]},{[ma]:!0,[Ra]:"sigv4",[ya]:Ha,[va]:"{Region}"}]},Uc={[ca]:Ea,[ua]:[{[da]:"ForcePathStyle"},!1]},Lc={[da]:"ForcePathStyle"},Dc={[ca]:Ea,[ua]:[{[da]:"Accelerate"},!1]},Bc={[ca]:Ta,[ua]:[{[da]:"Region"},"aws-global"]},zc={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"us-east-1"}]},jc={[ca]:Ua,[ua]:[Bc]},qc={[ca]:Ea,[ua]:[{[da]:"UseGlobalEndpoint"},!0]},Wc={[ha]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:{[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{Region}"}]},[ba]:{}},Hc={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{Region}"}]},Kc={[ca]:Ea,[ua]:[{[da]:"UseGlobalEndpoint"},!1]},Vc={[ca]:Ea,[ua]:[{[da]:"UseDualStack"},!1]},Qc={[ha]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Gc={[ca]:Ea,[ua]:[{[da]:"UseFIPS"},!1]},Jc={[ha]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Xc={[ha]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Zc={[ca]:Ea,[ua]:[{[ca]:Ca,[ua]:[Sc,"isIp"]},!1]},Yc={[ha]:Va,[fa]:Hc,[ba]:{}},eu={[ha]:$a,[fa]:Hc,[ba]:{}},tu={[Ma]:eu,[sa]:Ma},ru={[ha]:Qa,[fa]:Hc,[ba]:{}},nu={[ha]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},iu={[xa]:"Invalid region: region was not a valid DNS name.",[sa]:xa},ou={[da]:Xa},su={[da]:Za},au={[ca]:Ca,[ua]:[ou,"service"]},cu={[da]:tc},uu={[aa]:[pc],[xa]:"S3 Object Lambda does not support Dual-stack",[sa]:xa},du={[aa]:[hc],[xa]:"S3 Object Lambda does not support S3 Accelerate",[sa]:xa},lu={[aa]:[{[ca]:Sa,[ua]:[{[da]:"DisableAccessPoints"}]},{[ca]:Ea,[ua]:[{[da]:"DisableAccessPoints"},!0]}],[xa]:"Access points are not supported for this operation",[sa]:xa},hu={[aa]:[{[ca]:Sa,[ua]:[{[da]:"UseArnRegion"}]},{[ca]:Ea,[ua]:[{[da]:"UseArnRegion"},!1]},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},"{Region}"]}]}],[xa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[sa]:xa},fu={[ca]:Ca,[ua]:[{[da]:"bucketPartition"},Ra]},pu={[ca]:Ca,[ua]:[ou,"accountId"]},gu={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ya,[va]:"{bucketArn#region}"}]},mu={[xa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[sa]:xa},yu={[xa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[sa]:xa},vu={[xa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[sa]:xa},bu={[xa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[sa]:xa},wu={[xa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[sa]:xa},ku={[xa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[sa]:xa},Su={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{bucketArn#region}"}]},Eu={[ga]:[{[ma]:!0,[Ra]:Wa,[ya]:Ha,[wa]:["*"]},{[ma]:!0,[Ra]:"sigv4",[ya]:Ha,[va]:"{bucketArn#region}"}]},xu={[ca]:Ja,[ua]:[bc]},Au={[ha]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Tu={[ha]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Cu={[ha]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Ru={[ha]:sc,[fa]:Hc,[ba]:{}},_u={[ha]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Pu={[da]:"UseObjectLambdaEndpoint"},Ou={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ya,[va]:"{Region}"}]},Iu={[ha]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Mu={[ha]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Nu={[ha]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Fu={[ha]:La,[fa]:Hc,[ba]:{}},$u={[ha]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Uu=[{[da]:"Region"}],Lu=[{[da]:"Endpoint"}],Du=[bc],Bu=[pc],zu=[hc],ju=[gc,wc],qu=[{[ca]:Sa,[ua]:[{[da]:"DisableS3ExpressSessionAuth"}]},{[ca]:Ea,[ua]:[{[da]:"DisableS3ExpressSessionAuth"},!0]}],Wu=[kc],Hu=[Ec],Ku=[Tc],Vu=[fc],Qu=[{[ca]:_a,[ua]:[bc,6,14,!0],[la]:"s3expressAvailabilityZoneId"},{[ca]:_a,[ua]:[bc,14,16,!0],[la]:"s3expressAvailabilityZoneDelim"},{[ca]:Ta,[ua]:[{[da]:"s3expressAvailabilityZoneDelim"},"--"]}],Gu=[{[aa]:[fc],[Ma]:{[ha]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:xc,[ba]:{}},[sa]:Ma},{[Ma]:{[ha]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:xc,[ba]:{}},[sa]:Ma}],Ju=[{[ca]:_a,[ua]:[bc,6,15,!0],[la]:"s3expressAvailabilityZoneId"},{[ca]:_a,[ua]:[bc,15,17,!0],[la]:"s3expressAvailabilityZoneDelim"},{[ca]:Ta,[ua]:[{[da]:"s3expressAvailabilityZoneDelim"},"--"]}],Xu=[{[aa]:[fc],[Ma]:{[ha]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:Rc,[ba]:{}},[sa]:Ma},{[Ma]:{[ha]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:Rc,[ba]:{}},[sa]:Ma}],Zu=[vc],Yu=[{[ca]:qa,[ua]:[{[da]:ja},!1]}],ed=[{[ca]:Ta,[ua]:[{[da]:Ba},"beta"]}],td=[mc],rd=[{[ca]:qa,[ua]:[{[da]:"Region"},!1]}],nd=[{[ca]:Ta,[ua]:[{[da]:"Region"},"us-east-1"]}],id=[{[ca]:Ta,[ua]:[su,ec]}],od=[{[ca]:Ca,[ua]:[ou,"resourceId[1]"],[la]:tc},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[cu,""]}]}],sd=[ou,"resourceId[1]"],ad=[{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},""]}]}],cd=[{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[{[ca]:Ca,[ua]:[ou,"resourceId[2]"]}]}]}],ud=[ou,"resourceId[2]"],dd=[{[ca]:Aa,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]}],[la]:"bucketPartition"}],ld=[{[ca]:Ta,[ua]:[fu,{[ca]:Ca,[ua]:[{[da]:"partitionResult"},Ra]}]}],hd=[{[ca]:qa,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},!0]}],fd=[{[ca]:qa,[ua]:[pu,!1]}],pd=[{[ca]:qa,[ua]:[cu,!1]}],gd=[{[ca]:qa,[ua]:[{[da]:"Region"},!0]}],md={version:"1.0",parameters:{Bucket:uc,Region:uc,UseFIPS:dc,UseDualStack:dc,Endpoint:uc,ForcePathStyle:dc,Accelerate:dc,UseGlobalEndpoint:dc,UseObjectLambdaEndpoint:lc,Key:uc,Prefix:uc,CopySource:uc,DisableAccessPoints:lc,DisableMultiRegionAccessPoints:dc,UseArnRegion:lc,UseS3ExpressControlEndpoint:lc,DisableS3ExpressSessionAuth:lc},rules:[{[aa]:[{[ca]:Sa,[ua]:Uu}],rules:[{[aa]:[hc,fc],error:"Accelerate cannot be used with FIPS",[sa]:xa},{[aa]:[pc,gc],error:"Cannot set dual-stack in combination with a custom endpoint.",[sa]:xa},{[aa]:[gc,fc],error:"A custom endpoint cannot be combined with FIPS",[sa]:xa},{[aa]:[gc,hc],error:"A custom endpoint cannot be combined with S3 Accelerate",[sa]:xa},{[aa]:[fc,mc,yc],error:"Partition does not support FIPS",[sa]:xa},{[aa]:[vc,{[ca]:_a,[ua]:[bc,0,6,ka],[la]:Pa},{[ca]:Ta,[ua]:[{[da]:Pa},"--x-s3"]}],rules:[{[aa]:Bu,error:"S3Express does not support Dual-stack.",[sa]:xa},{[aa]:zu,error:"S3Express does not support S3 Accelerate.",[sa]:xa},{[aa]:ju,rules:[{[aa]:qu,rules:[{[aa]:Wu,rules:[{[aa]:Hu,rules:[{endpoint:{[ha]:Ia,[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{endpoint:{[ha]:$a,[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na},Cc],[sa]:Na},{[aa]:Wu,rules:[{[aa]:Hu,rules:[{endpoint:{[ha]:Ia,[fa]:Rc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{endpoint:{[ha]:$a,[fa]:Rc,[ba]:Ac},[sa]:Ma}],[sa]:Na},Cc],[sa]:Na},{[aa]:[_c,Pc],rules:[{[aa]:[Ec,Oc],rules:[{[aa]:Vu,endpoint:{[ha]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[fa]:xc,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{[aa]:qu,rules:[{[aa]:Qu,rules:Gu,[sa]:Na},{[aa]:Ju,rules:Gu,[sa]:Na},Ic],[sa]:Na},{[aa]:Qu,rules:Xu,[sa]:Na},{[aa]:Ju,rules:Xu,[sa]:Na},Ic],[sa]:Na},Cc],[sa]:Na},{[aa]:[Mc,_c,Pc],rules:[{[aa]:ju,endpoint:{[ha]:La,[fa]:xc,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://s3express-control-fips.{Region}.amazonaws.com",[fa]:xc,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3express-control.{Region}.amazonaws.com",[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na},{[aa]:[vc,{[ca]:_a,[ua]:[bc,49,50,ka],[la]:Da},{[ca]:_a,[ua]:[bc,8,12,ka],[la]:Ba},{[ca]:_a,[ua]:[bc,0,7,ka],[la]:za},{[ca]:_a,[ua]:[bc,32,49,ka],[la]:ja},{[ca]:Aa,[ua]:Uu,[la]:"regionPartition"},{[ca]:Ta,[ua]:[{[da]:za},"--op-s3"]}],rules:[{[aa]:Yu,rules:[{[aa]:[{[ca]:Ta,[ua]:[Nc,"e"]}],rules:[{[aa]:ed,rules:[Fc,{[aa]:ju,endpoint:{[ha]:"https://{Bucket}.ec2.{url#authority}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{endpoint:{[ha]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{[aa]:[{[ca]:Ta,[ua]:[Nc,"o"]}],rules:[{[aa]:ed,rules:[Fc,{[aa]:ju,endpoint:{[ha]:"https://{Bucket}.op-{outpostId}.{url#authority}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{endpoint:{[ha]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[sa]:xa}],[sa]:Na},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[sa]:xa}],[sa]:Na},{[aa]:Zu,rules:[{[aa]:[gc,{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[{[ca]:Oa,[ua]:Lu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[sa]:xa},{[aa]:[Uc,Tc],rules:[{[aa]:td,rules:[{[aa]:rd,rules:[{[aa]:[hc,yc],error:"S3 Accelerate cannot be used in this region",[sa]:xa},{[aa]:[pc,fc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,fc,Dc,Oc,jc,qc],rules:[{endpoint:Wc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,fc,Dc,Oc,jc,Kc],endpoint:Wc,[sa]:Ma},{[aa]:[Vc,fc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,fc,Dc,Oc,jc,qc],rules:[{endpoint:Qc,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,fc,Dc,Oc,jc,Kc],endpoint:Qc,[sa]:Ma},{[aa]:[pc,Gc,hc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Gc,hc,Oc,jc,qc],rules:[{endpoint:Jc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Gc,hc,Oc,jc,Kc],endpoint:Jc,[sa]:Ma},{[aa]:[pc,Gc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Gc,Dc,Oc,jc,qc],rules:[{endpoint:Xc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Gc,Dc,Oc,jc,Kc],endpoint:Xc,[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,kc,Bc],endpoint:{[ha]:Va,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,Bc],endpoint:{[ha]:$a,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,kc,jc,qc],rules:[{[aa]:nd,endpoint:Yc,[sa]:Ma},{endpoint:Yc,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,jc,qc],rules:[{[aa]:nd,endpoint:eu,[sa]:Ma},tu],[sa]:Na},{[aa]:[Vc,Gc,Dc,gc,wc,kc,jc,Kc],endpoint:Yc,[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,jc,Kc],endpoint:eu,[sa]:Ma},{[aa]:[Vc,Gc,hc,Oc,Bc],endpoint:{[ha]:Qa,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,hc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:ru,[sa]:Ma},{endpoint:ru,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,hc,Oc,jc,Kc],endpoint:ru,[sa]:Ma},{[aa]:[Vc,Gc,Dc,Oc,Bc],endpoint:{[ha]:Ga,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:Ga,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:nu,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,Dc,Oc,jc,Kc],endpoint:nu,[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[gc,wc,{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[Sc,"scheme"]},"http"]},{[ca]:Fa,[ua]:[bc,ka]},Uc,Gc,Vc,Dc],rules:[{[aa]:td,rules:[{[aa]:rd,rules:[tu],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[Uc,{[ca]:Ja,[ua]:Du,[la]:Xa}],rules:[{[aa]:[{[ca]:Ca,[ua]:[ou,"resourceId[0]"],[la]:Za},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[su,""]}]}],rules:[{[aa]:[{[ca]:Ta,[ua]:[au,Ya]}],rules:[{[aa]:id,rules:[{[aa]:od,rules:[uu,du,{[aa]:ad,rules:[lu,{[aa]:cd,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:ld,rules:[{[aa]:hd,rules:[{[aa]:[{[ca]:Ta,[ua]:[pu,""]}],error:"Invalid ARN: Missing account id",[sa]:xa},{[aa]:fd,rules:[{[aa]:pd,rules:[{[aa]:ju,endpoint:{[ha]:rc,[fa]:gu,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:gu,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:gu,[ba]:Ac},[sa]:Ma}],[sa]:Na},mu],[sa]:Na},yu],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},wu],[sa]:Na},{error:"Invalid ARN: bucket ARN is missing a region",[sa]:xa}],[sa]:Na},ku],[sa]:Na},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[sa]:xa}],[sa]:Na},{[aa]:id,rules:[{[aa]:od,rules:[{[aa]:ad,rules:[{[aa]:id,rules:[{[aa]:ad,rules:[lu,{[aa]:cd,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:[{[ca]:Ta,[ua]:[fu,"{partitionResult#name}"]}],rules:[{[aa]:hd,rules:[{[aa]:[{[ca]:Ta,[ua]:[au,Ka]}],rules:[{[aa]:fd,rules:[{[aa]:pd,rules:[{[aa]:zu,error:"Access Points do not support S3 Accelerate",[sa]:xa},{[aa]:[fc,pc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[fc,Vc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,pc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,gc,wc],endpoint:{[ha]:rc,[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma}],[sa]:Na},mu],[sa]:Na},yu],[sa]:Na},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[sa]:xa}],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},wu],[sa]:Na}],[sa]:Na}],[sa]:Na},{[aa]:[{[ca]:qa,[ua]:[cu,ka]}],rules:[{[aa]:Bu,error:"S3 MRAP does not support dual-stack",[sa]:xa},{[aa]:Vu,error:"S3 MRAP does not support FIPS",[sa]:xa},{[aa]:zu,error:"S3 MRAP does not support S3 Accelerate",[sa]:xa},{[aa]:[{[ca]:Ea,[ua]:[{[da]:"DisableMultiRegionAccessPoints"},ka]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[sa]:xa},{[aa]:[{[ca]:Aa,[ua]:Uu,[la]:nc}],rules:[{[aa]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[{[da]:nc},Ra]},{[ca]:Ca,[ua]:[ou,"partition"]}]}],rules:[{endpoint:{[ha]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[fa]:{[ga]:[{[ma]:ka,name:Wa,[ya]:Ka,[wa]:["*"]}]},[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[sa]:xa}],[sa]:Na}],[sa]:Na},{error:"Invalid Access Point Name",[sa]:xa}],[sa]:Na},ku],[sa]:Na},{[aa]:[{[ca]:Ta,[ua]:[au,Ha]}],rules:[{[aa]:Bu,error:"S3 Outposts does not support Dual-stack",[sa]:xa},{[aa]:Vu,error:"S3 Outposts does not support FIPS",[sa]:xa},{[aa]:zu,error:"S3 Outposts does not support S3 Accelerate",[sa]:xa},{[aa]:[{[ca]:Sa,[ua]:[{[ca]:Ca,[ua]:[ou,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[sa]:xa},{[aa]:[{[ca]:Ca,[ua]:sd,[la]:ja}],rules:[{[aa]:Yu,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:ld,rules:[{[aa]:hd,rules:[{[aa]:fd,rules:[{[aa]:[{[ca]:Ca,[ua]:ud,[la]:ic}],rules:[{[aa]:[{[ca]:Ca,[ua]:[ou,"resourceId[3]"],[la]:tc}],rules:[{[aa]:[{[ca]:Ta,[ua]:[{[da]:ic},ec]}],rules:[{[aa]:ju,endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[fa]:Eu,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Eu,[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: expected an access point name",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: Expected a 4-component resource",[sa]:xa}],[sa]:Na},yu],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: The Outpost Id was not set",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: No ARN type specified",[sa]:xa}],[sa]:Na},{[aa]:[{[ca]:_a,[ua]:[bc,0,4,!1],[la]:oc},{[ca]:Ta,[ua]:[{[da]:oc},"arn:"]},{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[xu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[sa]:xa},{[aa]:[{[ca]:Ea,[ua]:[Lc,ka]},xu],error:"Path-style addressing cannot be used with ARN buckets",[sa]:xa},{[aa]:Hu,rules:[{[aa]:td,rules:[{[aa]:[Dc],rules:[{[aa]:[pc,Oc,fc,Bc],endpoint:{[ha]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Oc,fc,jc,qc],rules:[{endpoint:Au,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Oc,fc,jc,Kc],endpoint:Au,[sa]:Ma},{[aa]:[Vc,Oc,fc,Bc],endpoint:{[ha]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Oc,fc,jc,qc],rules:[{endpoint:Tu,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Oc,fc,jc,Kc],endpoint:Tu,[sa]:Ma},{[aa]:[pc,Oc,Gc,Bc],endpoint:{[ha]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Oc,Gc,jc,qc],rules:[{endpoint:Cu,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Oc,Gc,jc,Kc],endpoint:Cu,[sa]:Ma},{[aa]:[Vc,gc,wc,Gc,Bc],endpoint:{[ha]:sc,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,gc,wc,Gc,jc,qc],rules:[{[aa]:nd,endpoint:Ru,[sa]:Ma},{endpoint:Ru,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,gc,wc,Gc,jc,Kc],endpoint:Ru,[sa]:Ma},{[aa]:[Vc,Oc,Gc,Bc],endpoint:{[ha]:ac,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Oc,Gc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:ac,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:_u,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Oc,Gc,jc,Kc],endpoint:_u,[sa]:Ma}],[sa]:Na},{error:"Path-style addressing cannot be used with S3 Accelerate",[sa]:xa}],[sa]:Na}],[sa]:Na}],[sa]:Na},{[aa]:[{[ca]:Sa,[ua]:[Pu]},{[ca]:Ea,[ua]:[Pu,ka]}],rules:[{[aa]:td,rules:[{[aa]:gd,rules:[uu,du,{[aa]:ju,endpoint:{[ha]:La,[fa]:Ou,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Ou,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[fa]:Ou,[ba]:Ac},[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[Mc],rules:[{[aa]:td,rules:[{[aa]:gd,rules:[{[aa]:[fc,pc,Oc,Bc],endpoint:{[ha]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[fc,pc,Oc,jc,qc],rules:[{endpoint:Iu,[sa]:Ma}],[sa]:Na},{[aa]:[fc,pc,Oc,jc,Kc],endpoint:Iu,[sa]:Ma},{[aa]:[fc,Vc,Oc,Bc],endpoint:{[ha]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[fc,Vc,Oc,jc,qc],rules:[{endpoint:Mu,[sa]:Ma}],[sa]:Na},{[aa]:[fc,Vc,Oc,jc,Kc],endpoint:Mu,[sa]:Ma},{[aa]:[Gc,pc,Oc,Bc],endpoint:{[ha]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,pc,Oc,jc,qc],rules:[{endpoint:Nu,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,pc,Oc,jc,Kc],endpoint:Nu,[sa]:Ma},{[aa]:[Gc,Vc,gc,wc,Bc],endpoint:{[ha]:La,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,gc,wc,jc,qc],rules:[{[aa]:nd,endpoint:Fu,[sa]:Ma},{endpoint:Fu,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,Vc,gc,wc,jc,Kc],endpoint:Fu,[sa]:Ma},{[aa]:[Gc,Vc,Oc,Bc],endpoint:{[ha]:cc,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:cc,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:$u,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,Vc,Oc,jc,Kc],endpoint:$u,[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na}],[sa]:Na},{error:"A region must be set when sending requests to S3.",[sa]:xa}]},yd=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),vd=(e,t={})=>yd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Lo} Initial EndpointParams: ${Do(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Bo(`Missing required parameter: '${e}'`);const c=rs(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Lo} Resolved endpoint: ${Do(c)}`),c})(md,{endpointParams:e,logger:t.logger})));Uo.aws=os;const bd=(wd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await wd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Rs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var wd;function kd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Sd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Ed=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(vd,(e=>{const t=[];return e.operation,t.push(kd(e)),t.push(Sd(e)),t}),{"aws.auth#sigv4":kd,"aws.auth#sigv4a":Sd}),xd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},Ad={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"}};class Td extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Td{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Td{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class _d extends Td{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Pd extends Td{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Pd.prototype)}}class Od extends Td{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Id,Md;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Md||(Md={}));class Nd extends Td{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Fd extends Td{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}class $d extends Td{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,$d.prototype)}}const Ud=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:Ud(e.Credentials)}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Bd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),zd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class jd extends Td{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Td{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Td{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Td{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}class Kd extends Td{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Kd.prototype)}}var Vd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Vd||(Vd={}));const Qd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Jd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[np]:e[ef],[Cp]:e[tf],[Rp]:e[af],[Pp]:e[sf],[_p]:[()=>Wr(e[Nl]),()=>e[Nl].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Vf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[fp]:e[Ah],[Ep]:e[Vh],[Xf]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[sp]:e[nh],[Of]:e[ph],[lp]:[()=>Wr(e[gh]),()=>pr(e[gh]).toString()],[hp]:[()=>Wr(e[mh]),()=>e[mh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"DeleteObject"],[Gf]:[,e[hf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Of]:e[ph],[If]:[()=>Wr(e[yh]),()=>pr(e[yh]).toString()],[Mf]:e[vh],[Nf]:[()=>Wr(e[kh]),()=>pr(e[kh]).toString()],[Bf]:e[Lh],[Op]:e[rf],[Ip]:e[nf],[Mp]:e[of],[Ep]:e[Vh],[sp]:e[nh],[ep]:e[Wl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"GetObject"],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[,e[Wh]],[Kf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Hh]).toString()],[Gf]:[,e[hf]],[Lf]:[()=>void 0!==e.PartNumber,()=>e[Uh].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Ep]:e[Vh],[sp]:e[nh],[bp]:[()=>Wr(e[Nh]),()=>(e[Nh]||[]).map(Zr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[$f]:[,"2"],[Af]:[,e[Yl]],[Cf]:[,e[oh]],[Uf]:[()=>void 0!==e.MaxKeys,()=>e[Th].toString()],[Df]:[,e[Fh]],[xf]:[,e[Xl]],[Pf]:[()=>void 0!==e.FetchOwner,()=>e[ch].toString()],[Qf]:[,e[Xh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},el=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Ef]:e[Jl]||"application/octet-stream",[Jf]:e[_l],[mf]:e[Ul],[yf]:e[Bl],[vf]:e[zl],[bf]:e[jl],[wf]:[()=>Wr(e[ql]),()=>e[ql].toString()],[kf]:e[Hl],[Tp]:e[$l],[Zf]:e[Ll],[Yf]:e[Dl],[tp]:e[Ql],[rp]:e[Gl],[Tf]:[()=>Wr(e[rh]),()=>pr(e[rh]).toString()],[Of]:e[ph],[Mf]:e[vh],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[dp]:e[hh],[Up]:[()=>Wr(e[ff]),()=>e[ff].toString()],[Cp]:e[tf],[Ap]:e[Yh],[Lp]:e[pf],[Op]:e[rf],[Ip]:e[nf],[Mp]:e[of],[Rp]:e[af],[Pp]:e[sf],[_p]:[()=>Wr(e[Nl]),()=>e[Nl].toString()],[Ep]:e[Vh],[Np]:e[df],[yp]:e[Ih],[vp]:[()=>Wr(e[Mh]),()=>{return(t=e[Mh],t.toISOString().replace(".000Z","Z")).toString();var t}],[mp]:e[Oh],[sp]:e[nh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[tf]:[,e.headers[Cp]],[af]:[,e.headers[Rp]],[sf]:[,e.headers[Pp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])]}),n=rr(nr(await wi(e.body,t)),"body");return null!=n[Fl]&&(r[Fl]=Cl(n[Fl])),r},rl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[eh]:[()=>void 0!==e.headers[ip],()=>Vt(e.headers[ip])],[hf]:[,e.headers[$p]],[Dh]:[,e.headers[Sp]]});return await Xe(e.body,t),r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[eh]:[()=>void 0!==e.headers[ip],()=>Vt(e.headers[ip])],[Ol]:[,e.headers[gf]],[ah]:[,e.headers[op]],[Jh]:[,e.headers[kp]],[xh]:[()=>void 0!==e.headers[Ff],()=>rr(wr(e.headers[Ff]))],[ql]:[()=>void 0!==e.headers[wf],()=>ar(e.headers[wf])],[sh]:[,e.headers[Rf]],[Ll]:[,e.headers[Zf]],[Dl]:[,e.headers[Yf]],[Ql]:[,e.headers[tp]],[Gl]:[,e.headers[rp]],[Ch]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[hf]:[,e.headers[$p]],[Ul]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[jl]:[,e.headers[bf]],[Vl]:[,e.headers[Sf]],[Jl]:[,e.headers[Ef]],[rh]:[()=>void 0!==e.headers[Tf],()=>rr(wr(e.headers[Tf]))],[ih]:[,e.headers[_f]],[pf]:[,e.headers[Lp]],[tf]:[,e.headers[Cp]],[rf]:[,e.headers[Op]],[of]:[,e.headers[Mp]],[af]:[,e.headers[Rp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])],[Yh]:[,e.headers[Ap]],[Dh]:[,e.headers[Sp]],[Qh]:[,e.headers[xp]],[$h]:[()=>void 0!==e.headers[gp],()=>cr(e.headers[gp])],[lf]:[()=>void 0!==e.headers[Fp],()=>cr(e.headers[Fp])],[Ih]:[,e.headers[yp]],[Mh]:[()=>void 0!==e.headers[vp],()=>rr(mr(e.headers[vp]))],[Oh]:[,e.headers[mp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[Dh]:[,e.headers[Sp]]}),n=rr(nr(await wi(e.body,t)),"body");return""===n.CommonPrefixes?r[Kl]=[]:null!=n[Kl]&&(r[Kl]=Sl(jr(n[Kl]))),""===n.Contents?r[Zl]=[]:null!=n[Zl]&&(r[Zl]=xl(jr(n[Zl]))),null!=n[Xl]&&(r[Xl]=ir(n[Xl])),null!=n[Yl]&&(r[Yl]=ir(n[Yl])),null!=n[oh]&&(r[oh]=ir(n[oh])),null!=n[wh]&&(r[wh]=Vt(n[wh])),null!=n[Eh]&&(r[Eh]=cr(n[Eh])),null!=n[Th]&&(r[Th]=cr(n[Th])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[_h]&&(r[_h]=ir(n[_h])),null!=n[Fh]&&(r[Fh]=ir(n[Fh])),null!=n[Xh]&&(r[Xh]=ir(n[Xh])),r},ol=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[ah]:[,e.headers[op]],[sh]:[,e.headers[Rf]],[Ll]:[,e.headers[Zf]],[Dl]:[,e.headers[Yf]],[Ql]:[,e.headers[tp]],[Gl]:[,e.headers[rp]],[tf]:[,e.headers[Cp]],[hf]:[,e.headers[$p]],[rf]:[,e.headers[Op]],[of]:[,e.headers[Mp]],[af]:[,e.headers[Rp]],[sf]:[,e.headers[Pp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])],[uf]:[()=>void 0!==e.headers[wp],()=>ar(e.headers[wp])],[Dh]:[,e.headers[Sp]]});return await Xe(e.body,t),r},sl=async(e,t)=>{const r={...e,body:await ki(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await yl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await wl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await ul(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await dl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await gl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await hl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await ml(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await vl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await ll(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await fl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await pl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await kl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await bl(r,t);default:const i=r.body;return al({output:e,parsedBody:i,errorCode:n})}},al=(cl=Td,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:cl,errorCode:r})});var cl;const ul=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Rl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new Pd({$metadata:Rl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Rl(e),...r});return Mr(n,e.body)},hl=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Il]&&(r[Il]=ir(n[Il])),null!=n[Yh]&&(r[Yh]=ir(n[Yh]));const i=new Nd({$metadata:Rl(e),...r});return Mr(i,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Rl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Rl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Rl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Rl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Rl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new $d({$metadata:Rl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Kd({$metadata:Rl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Rl(e),...r});return Mr(n,e.body)},kl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Rl(e),...r});return Mr(n,e.body)},Sl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Fh]&&(t[Fh]=ir(e[Fh])),t})(e))),El=(e,t)=>{const r={};return null!=e[Sh]&&(r[Sh]=ir(e[Sh])),null!=e[xh]&&(r[xh]=rr(mr(e[xh]))),null!=e[sh]&&(r[sh]=ir(e[sh])),""===e.ChecksumAlgorithm?r[$l]=[]:null!=e[$l]&&(r[$l]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[$l]))),null!=e[uf]&&(r[uf]=ar(e[uf])),null!=e[Yh]&&(r[Yh]=ir(e[Yh])),null!=e[Ph]&&(r[Ph]=Al(e[Ph])),null!=e[Gh]&&(r[Gh]=Tl(e[Gh])),r},xl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>El(e))),Al=(e,t)=>{const r={};return null!=e[th]&&(r[th]=ir(e[th])),null!=e[fh]&&(r[fh]=ir(e[fh])),r},Tl=(e,t)=>{const r={};return null!=e[bh]&&(r[bh]=Vt(e[bh])),null!=e[Kh]&&(r[Kh]=rr(mr(e[Kh]))),r},Cl=(e,t)=>{const r={};return null!=e[Pl]&&(r[Pl]=ir(e[Pl])),null!=e[Zh]&&(r[Zh]=ir(e[Zh])),null!=e[cf]&&(r[cf]=ir(e[cf])),null!=e[ah]&&(r[ah]=rr(mr(e[ah]))),r},Rl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),_l="ACL",Pl="AccessKeyId",Ol="AcceptRanges",Il="AccessTier",Ml="BypassGovernanceRetention",Nl="BucketKeyEnabled",Fl="Credentials",$l="ChecksumAlgorithm",Ul="CacheControl",Ll="ChecksumCRC32",Dl="ChecksumCRC32C",Bl="ContentDisposition",zl="ContentEncoding",jl="ContentLanguage",ql="ContentLength",Wl="ChecksumMode",Hl="ContentMD5",Kl="CommonPrefixes",Vl="ContentRange",Ql="ChecksumSHA1",Gl="ChecksumSHA256",Jl="ContentType",Xl="ContinuationToken",Zl="Contents",Yl="Delimiter",eh="DeleteMarker",th="DisplayName",rh="Expires",nh="ExpectedBucketOwner",ih="ExpiresString",oh="EncodingType",sh="ETag",ah="Expiration",ch="FetchOwner",uh="GrantFullControl",dh="GrantRead",lh="GrantReadACP",hh="GrantWriteACP",fh="ID",ph="IfMatch",gh="IfMatchLastModifiedTime",mh="IfMatchSize",yh="IfModifiedSince",vh="IfNoneMatch",bh="IsRestoreInProgress",wh="IsTruncated",kh="IfUnmodifiedSince",Sh="Key",Eh="KeyCount",xh="LastModified",Ah="MFA",Th="MaxKeys",Ch="MissingMeta",Rh="Name",_h="NextContinuationToken",Ph="Owner",Oh="ObjectLockLegalHoldStatus",Ih="ObjectLockMode",Mh="ObjectLockRetainUntilDate",Nh="OptionalObjectAttributes",Fh="Prefix",$h="PartsCount",Uh="PartNumber",Lh="Range",Dh="RequestCharged",Bh="ResponseCacheControl",zh="ResponseContentDisposition",jh="ResponseContentEncoding",qh="ResponseContentLanguage",Wh="ResponseContentType",Hh="ResponseExpires",Kh="RestoreExpiryDate",Vh="RequestPayer",Qh="ReplicationStatus",Gh="RestoreStatus",Jh="Restore",Xh="StartAfter",Zh="SecretAccessKey",Yh="StorageClass",ef="SessionMode",tf="ServerSideEncryption",rf="SSECustomerAlgorithm",nf="SSECustomerKey",of="SSECustomerKeyMD5",sf="SSEKMSEncryptionContext",af="SSEKMSKeyId",cf="SessionToken",uf="Size",df="Tagging",lf="TagCount",hf="VersionId",ff="WriteOffsetBytes",pf="WebsiteRedirectLocation",gf="accept-ranges",mf="cache-control",yf="content-disposition",vf="content-encoding",bf="content-language",wf="content-length",kf="content-md5",Sf="content-range",Ef="content-type",xf="continuation-token",Af="delimiter",Tf="expires",Cf="encoding-type",Rf="etag",_f="expiresstring",Pf="fetch-owner",Of="if-match",If="if-modified-since",Mf="if-none-match",Nf="if-unmodified-since",Ff="last-modified",$f="list-type",Uf="max-keys",Lf="partNumber",Df="prefix",Bf="range",zf="response-cache-control",jf="response-content-disposition",qf="response-content-encoding",Wf="response-content-language",Hf="response-content-type",Kf="response-expires",Vf="session",Qf="start-after",Gf="versionId",Jf="x-amz-acl",Xf="x-amz-bypass-governance-retention",Zf="x-amz-checksum-crc32",Yf="x-amz-checksum-crc32c",ep="x-amz-checksum-mode",tp="x-amz-checksum-sha1",rp="x-amz-checksum-sha256",np="x-amz-create-session-mode",ip="x-amz-delete-marker",op="x-amz-expiration",sp="x-amz-expected-bucket-owner",ap="x-amz-grant-full-control",cp="x-amz-grant-read",up="x-amz-grant-read-acp",dp="x-amz-grant-write-acp",lp="x-amz-if-match-last-modified-time",hp="x-amz-if-match-size",fp="x-amz-mfa",pp="x-amz-missing-meta",gp="x-amz-mp-parts-count",mp="x-amz-object-lock-legal-hold",yp="x-amz-object-lock-mode",vp="x-amz-object-lock-retain-until-date",bp="x-amz-optional-object-attributes",wp="x-amz-object-size",kp="x-amz-restore",Sp="x-amz-request-charged",Ep="x-amz-request-payer",xp="x-amz-replication-status",Ap="x-amz-storage-class",Tp="x-amz-sdk-checksum-algorithm",Cp="x-amz-server-side-encryption",Rp="x-amz-server-side-encryption-aws-kms-key-id",_p="x-amz-server-side-encryption-bucket-key-enabled",Pp="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Ip="x-amz-server-side-encryption-customer-key",Mp="x-amz-server-side-encryption-customer-key-md5",Np="x-amz-tagging",Fp="x-amz-tagging-count",$p="x-amz-version-id",Up="x-amz-write-offset-bytes",Lp="x-amz-website-redirect-location",Dp="x-id";class Bp extends(Wt.classBuilder().ep({...Ad,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Dd,Ld).ser(Jd).de(tl).build()){}var zp="3.701.0";function jp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var qp={name:"SHA-1"},Wp={name:"HMAC",hash:qp},Hp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Kp={};function Vp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Kp}var Qp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Vp().crypto.subtle.importKey("raw",Gp(e),Wp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!jp(e)){var t=Gp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Vp().crypto.subtle.sign(Wp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):jp(this.toHash)?Promise.resolve(Hp):Promise.resolve().then((function(){return Vp().crypto.subtle.digest(qp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Gp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Jp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Xp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Jp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Zp=function(){function e(e){if(!Xp(Vp()))throw new Error("SHA1 not supported");this.hash=new Qp(e)}return e.prototype.update=function(e,t){this.hash.update(_i(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Yp={name:"SHA-256"},eg={name:"HMAC",hash:Yp},tg=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]),rg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Pi(e)){var t=_i(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Vp().crypto.subtle.sign(eg,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Pi(this.toHash)?Promise.resolve(tg):Promise.resolve().then((function(){return Vp().crypto.subtle.digest(Yp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Vp().crypto.subtle.importKey("raw",_i(e.secret),eg,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function ng(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ig(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]cg)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===og&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%og>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(sg[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),dg=function(){function e(e){this.secret=e,this.hash=new ug,this.reset()}return e.prototype.update=function(e){if(!Pi(e)&&!this.error)try{this.hash.update(_i(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return ng(this,void 0,void 0,(function(){return ig(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new ug,this.secret){this.outer=new ug;var e=function(e){var t=_i(e);if(t.byteLength>og){var r=new ug;r.update(t),t=r.digest()}var n=new Uint8Array(og);return n.set(t),n}(this.secret),t=new Uint8Array(og);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";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}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[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}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var fg=Yr(hg.exports);const pg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?fg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class gg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&mg(t),new gg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&mg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function mg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class yg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(gg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Rg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Di;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Di).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Mg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Ng(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Fg{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new _g(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const Ug=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Lg=e=>new $g(e);const Dg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Bg=64,zg=[1732584193,4023233417,2562383102,271733878];class jg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Bg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Bg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=Wg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=Wg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=Wg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=Wg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=Wg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=Wg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=Wg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=Wg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=Wg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=Wg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=Wg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=Wg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=Wg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=Wg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=Wg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=Wg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Hg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Hg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Hg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Hg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Hg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Hg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Hg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Hg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Hg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Hg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Hg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Hg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Hg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Hg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Hg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Hg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Kg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Kg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Kg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Kg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Kg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Kg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Kg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Kg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Kg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Kg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Kg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Kg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Kg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Kg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Kg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Kg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Vg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Vg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Vg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Vg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Vg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Vg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Vg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Vg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Vg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Vg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Vg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Vg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Vg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Vg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Vg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Vg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(zg),this.buffer=new DataView(new ArrayBuffer(Bg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function qg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function Wg(e,t,r,n,i,o,s){return qg(t&r|~t&n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return qg(t&n|r&~n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return qg(t^r^n,e,t,i,o,s)}function Vg(e,t,r,n,i,o,s){return qg(r^(t|~n),e,t,i,o,s)}const Qg="function"==typeof TextEncoder?new TextEncoder:null,Gg=e=>{if("string"==typeof e){if(Qg)return Qg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Jg=["in-region","cross-region","mobile","standard","legacy"],Xg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?fg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Zg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Xg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Jg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Te,base64Encoder:e?.base64Encoder??Pe,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??vd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Ed,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ia,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ts,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??_e}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Gg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??pg({serviceId:n.serviceId,clientVersion:zp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Lg,maxAttempts:e?.maxAttempts??3,md5:e?.md5??jg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Ms),sha1:e?.sha1??Zp,sha256:e?.sha256??lg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Dg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Yg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},em=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},tm=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class rm extends qt{constructor(...[e]){const t=Zg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>Cs(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=As(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return gs(t);const e=await t();return gs(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!ps(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Is.ADAPTIVE?new qs(r):new js(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Z)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new fo((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(xd(o),{session:[()=>this,Bp]}),a=((e,t)=>{const r={...Yg(e),...Br(e),...U(e),...em(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...tm(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ls(e),fs)}}))(this.config)),this.middlewareStack.use(ta(this.config)),this.middlewareStack.use(vs(this.config)),this.middlewareStack.use(Zi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Yi)}})),this.middlewareStack.use(ro(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:bd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Io(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(ao(this.config)),this.middlewareStack.use(ko(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(xo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const nm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},im=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?om(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),nm)}});function om(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class sm extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ji(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),im(r),uo()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(zd,Bd).ser(Zd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Yd).de(il).build()){}class um extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ji(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),io(),_o(r),im(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Gd,Qd).ser(el).de(ol).build()){}class dm{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new cm({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new sm({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class lm extends dm{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new rm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new um({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new am({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class hm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class fm extends hm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class pm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class gm extends pm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class mm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;!1===(yield this.client.exists(n.substring(0,n.lastIndexOf("/"))))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.client.getFileUploadLink(this.dir+"/"+r);const a=new URL(s);a.search="",s=a.toString();const c=btoa(this.username+":"+this.password),u=yield e.put(s,o,{headers:{Authorization:"Basic "+c},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class ym{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class vm extends ym{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const s=new FormData;s.append("file",o);const a=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,s,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(a.status>=300)||(console.error("Error occurred during file upload:",a),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const bm=["book","config","cover","font"];class wm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new M(t,r):"google"===e?new _(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new lm(t):"webdav"===e?new mm(t):"docker"===e?new vm(t):"boxnet"===e?new E(t,r):"mega"===e?new O(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new fm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new gm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of bm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const km={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},Sm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Em={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function xm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Am={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Tm,Cm={sqlStatement:{createTableStatement:xm({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:xm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:xm({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:xm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:xm({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:xm({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:xm({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:xm(km),getByBookKeyStatement:xm(Sm),getByBookKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:xm(Em)},jsonToSqlite:xm({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:xm(Am)};class Rm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class _m{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Rm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Tm=_m,_m.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},_m.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Tm.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?3e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),_m.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Rm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Tm.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield _m.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),_m.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const Pm=m.cloudUrl,Om=m.cloudCNUrl;class Im{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Om:Pm,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Im.requestQueue||(Im.requestQueue=[]),new Promise(((t,r)=>{Im.requestQueue.push({config:e,resolve:t,reject:r}),Im.processingQueue||this.processQueue()}))}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Im.processingQueue){Im.processingQueue=!0;try{for(;Im.requestQueue.length>0;){const e=Im.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Im.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{let n="";try{n=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{let r="";try{r=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let n="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((i,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(u.close(),i(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);i(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Im.processingQueue=!1,Im.requestQueue=[];class Mm extends Im{constructor(e,t){super(e,t)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}}class Nm extends Im{constructor(e,t){super(e,t)}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class Um{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"===s.operation||"delete"===s.operation?p[n].upload.push(o):console.info("ignore",a)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time?(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time?h[r].upload.push(i):console.info("ignore",s):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time?(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("update"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Lm=(Dm=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Bm="browser",class extends Dm{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,t,r=!0){let n=JSON.parse(this.getItem("readerConfig")||"{}");n[e]=t,this.setItem("readerConfig",JSON.stringify(n)),r&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:Bm,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Dm,Bm;class zm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield Wm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=jm((new TextEncoder).encode(JSON.stringify(r))),i=jm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${jm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=dy}}function Ly(e){return function(t){return null==t?void 0:t[e]}}var Dy=Ly("byteLength"),By=Uy(Dy),zy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var jy=ey?function(e){return oy?oy(e)&&!Py(e):By(e)&&zy.test(Zm.call(e))}:$y(!1),qy=Ly("length");function Wy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Nv=Iv(Mv),Fv=Iv(lv(Mv)),$v=Vy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Uv=/(.)^/,Lv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Dv=/\\|'|\r|\n|\u2028|\u2029/g;function Bv(e){return"\\"+Lv[e]}var zv=/^\s*(\w|\$)+\s*$/;var jv=0;function qv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=yv(e.prototype),s=e.apply(o,i);return hy(s)?s:o}var Wv=ly((function(e,t){var r=Wv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Vv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Yv=Wv(Zv,2);function eb(e,t,r){t=Rv(t,r);for(var n,i=Hy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Xm.call(n,s,a),Fy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Kv(t)&&Hy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var vb=ly((function(e,t,r){var n,i;return Ay(t)?i=t:(t=bv(t),n=t.slice(0,-1),t=t[t.length-1]),db(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=wv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function bb(e,t){return db(e,xv(t))}function wb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Kv(e)?e:dv(e)).length;ao&&(o=n);else t=Rv(t,r),ub(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var kb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function Sb(e){return e?Oy(e)?Xm.call(e):my(e)?e.match(kb):Kv(e)?db(e,Sv):dv(e):[]}function Eb(e,t,r){if(null==t||r)return Kv(e)||(e=dv(e)),e[Pv(e.length-1)];var n=Sb(e),i=qy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Av(n,t[1])),t=Zy(e)):(n=_b,t=Vv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=db(Vv(t,!1,!1),String),n=function(e,r){return!yb(t,r)}),Pb(e,n,r)}));function Ib(e,t,r){return Xm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Mb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:Ib(e,e.length-t)}function Nb(e,t,r){return Xm.call(e,null==t||r?1:t)}var Fb=ly((function(e,t){return t=Vv(t,!0,!0),pb(e,(function(e){return!yb(t,e)}))})),$b=ly((function(e,t){return Fb(e,t)}));function Ub(e,t,r,n){py(t)||(n=r,r=t,t=!1),null!=r&&(r=Rv(r,n));for(var i=[],o=[],s=0,a=qy(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Ov()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=ly((function(u){return a=this,o=u,i=Ov(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return Wv(t,e)},negate:Xv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Zv,once:Yv,findKey:eb,findIndex:rb,findLastIndex:nb,sortedIndex:ib,indexOf:sb,lastIndexOf:ab,find:cb,detect:cb,findWhere:function(e,t){return cb(e,Ev(t))},each:ub,forEach:ub,map:db,collect:db,reduce:hb,foldl:hb,inject:hb,reduceRight:fb,foldr:fb,filter:pb,select:pb,reject:function(e,t,r){return pb(e,Xv(Rv(t)),r)},every:gb,all:gb,some:mb,any:mb,contains:yb,includes:yb,include:yb,invoke:vb,pluck:bb,where:function(e,t){return pb(e,Ev(t))},max:wb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Kv(e)?e:dv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Kb=e=>e.map((e=>e.author||"")),Vb=e=>e.map((e=>e.key)),Qb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Gb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Qb(i,n).reverse():Qb(i,n);if(2===t.sort){let r=Hb(e),n=Hb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Qb(n,r).reverse():Qb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Vb(e);return 1===t.order?Qb(Wb.union(n,i),i).reverse():Qb(Wb.union(n,i),i)}if(5===t.sort){let r=Kb(e),n=Kb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Qb(n,r).reverse():Qb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Vb(e);return 1===t.order?Qb(n,i).reverse():Qb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?Wb.sortBy(n,"chapterIndex"):Wb.sortBy(n,"chapterIndex").reverse();let i=Wb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=Wb.clone(e).reverse(),i=Wb.uniq(e.map((e=>{let t=Wb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=Wb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?Wb.sortBy(n,"chapterIndex"):Wb.sortBy(n,"chapterIndex").reverse();let i=Wb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Jb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};margin-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Xb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{_m as BookHelper,g as CommonTool,Lm as ConfigService,b as KookitConfig,$m as LoginHelper,Mm as ReaderRequest,Xb as SearchUtil,Gb as SortUtil,Cm as SqlStatement,Jb as StyleHelper,Um as SyncHelper,wm as SyncUtil,Nm as ThirdpartyRequest,zm as TokenService,Fm as UserRequest}; +import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={publicUrl:"https://api.960960.xyz",cloudUrl:"https://cloud.960960.xyz",cloudCNUrl:"https://cloud.koodoreader.cn",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class T{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends T{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const i=r.substring(0,r.lastIndexOf("/"));if(i){if(!(yield this.ensureDirectoryExists(i)))return console.error("Failed to create directory:",i),!1}const o=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${r}`,overwrite:!0}});if(200!==o.status)return console.error("Error getting upload URL:",o),!1;const s=o.data.href;let a=r.split("/").pop()||"",c=new File([t],a,{lastModified:(new Date).getTime(),type:t.type});const u=yield e.put(s,c,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${t}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const i=n.data.href,o=yield e({url:i,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class _ extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class P{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class O extends P{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const s=this.baseUrl+":/"+r+":/createUploadSession",a=yield e.post(s,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let c=o.size;const u=o.type,d=a.data.uploadUrl,l=yield e.put(d,o,{headers:{"Content-Type":u,"Content-Range":`bytes 0-${c-1}/${c}`},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file download:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=`${this.baseUrl}:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Z=J;var Y,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Y||(Y={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Y.MD5,re=Y.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Ae=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Ae[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Ae[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Ae[r]=t}xe["+"]=62,Ae[62]="+",xe["/"]=63,Ae[63]="/";const Te=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),_e=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function Pe(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Oe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Oe.mutate(Te(e)):Oe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Oe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Pe(e):_e(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Pe(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return _e(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.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 e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Pe;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Oe.mutate(e);if(!e)return Oe.mutate(new Uint8Array);const r=t.streamCollector(e);return Oe.mutate(await r)};function Ze(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ye(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ze(e))).join("/"):Ze(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={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},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},At=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),Tt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||At(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(Pt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!_t.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const _t=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Pt{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Ot(t),new Pt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ot(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ot(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await Tt(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await Tt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await Tt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Zt=e=>er(e,16),Yt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Zt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Or(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Pr(d)),p},yr=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$/),vr=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$/),br=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})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Or(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Or(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Tr(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),_r(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Or(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Ar=[31,28,31,30,31,30,31,31,30,31,30,31],Tr=(e,t,r)=>{let n=Ar[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Yt("string"==typeof e?sr(e):e))(Or(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},_r=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),Pr=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Or=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Zr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Yr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":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",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;var wn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}};const kn=tn;function Sn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&xn(e,t))t+=7,[entityName,val,t]=Sn(e,t+1),-1===val.indexOf("&")&&(r[Rn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&An(e,t))t+=8;else if(i&&Tn(e,t))t+=8;else if(i&&Cn(e,t))t+=9;else{if(!En)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Pn=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(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);const In={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const Mn=tn,Nn=wn,Fn=_n,$n=function(e,t={}){if(t=Object.assign({},In,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if(t.hex&&Pn.test(r))return Number.parseInt(r,16);{const n=On.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);const a=n[4]||n[6];if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;{const n=Number(r),c=""+n;return-1!==c.search(/[eE]/)||a?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===c&&""===s||c===s||i&&c==="-"+s?n:e:o?s===c||i+s===c?n:e:r===c||r===i+c?n:e}}return e}};function Un(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Jn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Jn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Dn(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Bn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function zn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=Mn.getAllMatches(e,Bn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Qn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Nn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Vn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Fn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Vn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Qn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Nn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Nn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Nn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function qn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const Wn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Hn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Kn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Vn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Qn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Vn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Vn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Vn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Qn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Jn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&$n(e,r)}return Mn.isExist(e)?e:""}var Xn=class{constructor(e){this.options=e,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:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=Un,this.parseXml=jn,this.parseTextData=Ln,this.resolveNameSpace=Dn,this.buildAttributesMap=zn,this.isItStopNode=Kn,this.replaceEntitiesValue=Wn,this.readStopNodeData=Gn,this.saveTextToParentTag=Hn,this.addChild=qn}},Zn={};function Yn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function ei(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=di(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${di(a[":@"],t)}`,h=ci(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ui(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ci(e,t,"",r)},pi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},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};function gi(e){this.options=Object.assign({},pi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=vi),this.processTextOrObjNode=mi,this.options.format?(this.indentate=yi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function mi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function yi(e){return this.options.indentBy.repeat(e)}function vi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}gi.prototype.build=function(e){return this.options.preserveOrder?fi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},gi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},gi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new bi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),ki=async(e,t)=>{const r=await wi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},Si=[Y.CRC32,Y.CRC32C,Y.SHA1,Y.SHA256],Ei=[Y.SHA256,Y.SHA1,Y.CRC32,Y.CRC32C],xi=e=>e===Y.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,Ai=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!At(e);function Ti(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ci(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function _i(e){return e instanceof Uint8Array?e:"string"==typeof e?Ri(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Pi(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Oi(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Ii(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Fi[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Fi=Ii([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]);function $i(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ui(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Bi[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Bi=Ii([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]);const zi=(e,t)=>({[Y.MD5]:t.md5,[Y.CRC32]:Li,[Y.CRC32C]:Mi,[Y.SHA1]:t.sha1,[Y.SHA256]:t.sha256}[e]),ji=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},qi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},Wi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!Si.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${Si}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Y.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Y.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Y.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Y.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=xi(f),r=zi(f,e);if(Ai(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await ji(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Hi=(e=[])=>{const t=[];for(const r of Ei)e.includes(r)&&Si.includes(r)&&t.push(r);return t};function Ki(e){return new Blob([e]).stream()}const Vi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await ji(t,e)),Qi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Gi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Hi(d).every((e=>{const t=xi(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=Ai(a.body);i&&(c=await e.streamCollector(a.body),a.body=Ki(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Hi(r),{body:i,headers:o}=e;for(const r of n){const n=xi(r),s=o[n];if(s){const o=zi(r,t),{base64Encoder:a}=t;if(Ai(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Vi(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Ki(c))}return s},Ji=(e,t)=>({applyToStack:r=>{r.add(Wi(e,t),qi),r.addRelativeTo(Gi(e,t),Qi)}});const Xi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Zi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Xi)}}),Yi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},eo="X-Amzn-Trace-Id",to={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},ro=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(eo))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[eo]=o),t({...r,request:n})})(e),to)}});const no={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},io=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="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 t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),no)}}),oo={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const so={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},ao=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),so),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),oo)}}),co={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},uo=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),co)}});class lo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+lo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new ho(Promise.resolve(e)))}))),e})):n.set(r,new ho(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var po;fo.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(po||(po={}));const go="X-Amz-S3session-Token",mo=go.toLowerCase();class yo extends Nt{async signWithCredentials(e,t,r){const n=vo(t);e.headers[mo]=t.sessionToken;return bo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=vo(t);delete e.headers[mo],e.headers[go]=t.sessionToken,e.query=e.query??{},e.query[go]=t.sessionToken;return bo(this,n),this.presign(e,r)}}function vo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function bo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const wo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},ko=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[mo]=i.sessionToken)}}}return t(n)})(e),wo)}}),So=e=>e=>{throw e},Eo=(e,t)=>{},xo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||So)(o));return(a.successHandler||Eo)(u.response,o),u},Ao={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},To=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await Co(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&Ao[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Co=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Ro={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},_o=e=>({applyToStack:t=>{t.addRelativeTo(To(e),Ro)}});const Po={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Oo={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Io=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),Oo),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),Po)}});const Mo=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}$"),No=e=>Mo.test(e)||e.startsWith("[")&&e.endsWith("]"),Fo=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),$o=(e,t=!1)=>{if(!t)return Fo.test(e);const r=e.split(".");for(const e of r)if(!$o(e))return!1;return!0},Uo={},Lo="endpoints";function Do(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Do(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Do).join(", ")})`:JSON.stringify(e,null,2)}class Bo extends Error{constructor(e){super(e),this.name="EndpointError"}}const zo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Bo(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Bo(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Bo(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),jo={[B.HTTP]:80,[B.HTTPS]:443},qo={booleanEquals:(e,t)=>e===t,getAttr:zo,isSet:e=>null!=e,isValidHostLabel:$o,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=No(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${jo[c]}`)||"string"==typeof e&&e.includes(`${n}:${jo[c]}`)?`:${jo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},Wo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return Wo(e,r);if(e.fn)return Ko(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Bo(`'${t}': ${String(e)} is not a string, function or reference.`)},Ko=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Ho(e,"arg",r))),i=e.split(".");return i[0]in Uo&&null!=i[1]?Uo[i[0]][i[1]](...n):qo[e](...n)},Vo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Bo(`'${e}' is already defined in Reference Record.`);const n=Ko(t,r);return r.logger?.debug?.(`${Lo} evaluateCondition: ${Do(t)} = ${Do(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Qo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Vo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Lo} assign: ${i.name} := ${Do(i.value)}`))}return{result:!0,referenceRecord:r}},Go=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Ho(e,"Header value entry",t);if("string"!=typeof n)throw new Bo(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Jo=(e,t)=>{if(Array.isArray(e))return e.map((e=>Jo(e,t)));switch(typeof e){case"string":return Wo(e,t);case"object":if(null===e)throw new Bo(`Unexpected endpoint property: ${e}`);return Xo(e,t);case"boolean":return e;default:throw new Bo("Unexpected endpoint property type: "+typeof e)}},Xo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Jo(n,t)})),{}),Zo=(e,t)=>{const r=Ho(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Bo("Endpoint URL must be a string, got "+typeof r)},Yo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Lo} Resolving endpoint from template: ${Do(n)}`),{...null!=u&&{headers:Go(u,s)},...null!=c&&{properties:Xo(c,s)},url:Zo(a,s)}},es=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(i)throw new Bo(Ho(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},ts=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Qo(r,t);if(i)return rs(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},rs=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Yo(r,t);if(e)return e}else if("error"===r.type)es(r,t);else{if("tree"!==r.type)throw new Bo(`Unknown endpoint rule: ${r}`);{const e=ts(r,t);if(e)return e}}throw new Bo("Rules evaluation failed")},ns=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!ns(t))return!1;return!0}return!!$o(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!No(e)))};let is={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"};const os={isVirtualHostableS3Bucket:ns,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=is;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};Uo.aws=os;const ss=/\d{12}\.ddb/;const as="user-agent",cs="x-amz-user-agent",us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,ds=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ls=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(hs)||[],a=(await e.defaultUserAgentProvider()).map(hs);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(ss)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(hs)||[],d=await e.userAgentAppId();d&&a.push(hs([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[cs]=o[cs]?`${o[as]} ${h}`:h),o[as]=l):o[cs]=l,t({...n,request:i})},hs=e=>{const t=e[0].split("/").map((e=>e.replace(us,"-"))).join("/"),r=e[1]?.replace(ds,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},fs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},ps=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),gs=e=>ps(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,ms="content-length";const ys={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},vs=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(ms))try{const t=r(e);n.headers={...n.headers,[ms]:String(t)}}catch(e){}}return e({...t,request:n})}),ys)}}),bs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,ws=/(\d+\.){3}\d+/,ks=/\.\./,Ss=e=>bs.test(e)&&!ws.test(e)&&!ks.test(e),Es=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},xs=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},As=async e=>{};const Ts=e=>{if("string"==typeof e)return Ts(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},Cs=e=>"object"==typeof e?"url"in e?Ts(e.url):e:Ts(e),Rs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await xs(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Es(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!Ss(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},_s=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await As(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Cs(e)))}const i=await Rs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},Ps={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(_s({config:e,instructions:t}),Ps)}});var Is;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Is||(Is={}));const Ms=Is.STANDARD,Ns=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Fs=["TimeoutError","RequestTimeout","RequestTimeoutException"],$s=[500,502,503,504],Us=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Ls=e=>429===e.$metadata?.httpStatusCode||Ns.includes(e.name)||1==e.$retryable?.throttling,Ds=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Fs.includes(e.name)||Us.includes(e?.code||"")||$s.includes(e.$metadata?.httpStatusCode||0);class Bs{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,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(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Bs.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Ls(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Bs.setTimeoutFn=setTimeout;const zs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class js{constructor(e){this.maxAttempts=e,this.mode=Is.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return zs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,zs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class qs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Is.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Bs,this.standardRetryStrategy=new js(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let Ws;const Hs=new Uint8Array(16);function Ks(){if(!Ws&&(Ws="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ws))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ws(Hs)}const Vs=[];for(let e=0;e<256;++e)Vs.push((e+256).toString(16).slice(1));var Qs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gs(e,t,r){if(Qs.randomUUID&&!t&&!e)return Qs.randomUUID();const n=(e=e||{}).random||(e.rng||Ks)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Vs[e[t+0]]+Vs[e[t+1]]+Vs[e[t+2]]+Vs[e[t+3]]+"-"+Vs[e[t+4]]+Vs[e[t+5]]+"-"+Vs[e[t+6]]+Vs[e[t+7]]+"-"+Vs[e[t+8]]+Vs[e[t+9]]+"-"+Vs[e[t+10]]+Vs[e[t+11]]+Vs[e[t+12]]+Vs[e[t+13]]+Vs[e[t+14]]+Vs[e[t+15]]}(n)}const Js=e=>e?.body instanceof ReadableStream,Xs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Zs=e=>{const t={error:e,errorType:Ys(e)},r=ra(e.$response);return r&&(t.retryAfterHint=r),t},Ys=e=>Ls(e)?"THROTTLING":Ds(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ds(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",ea={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ta=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Xs(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Gs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Zs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Js(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),ea)}}),ra=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},na=null;class ia{constructor(e){this.sigv4Signer=new yo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.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(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.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(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.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(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=na,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.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`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const oa="required",sa="type",aa="conditions",ca="fn",ua="argv",da="ref",la="assign",ha="url",fa="properties",pa="backend",ga="authSchemes",ma="disableDoubleEncoding",ya="signingName",va="signingRegion",ba="headers",wa="signingRegionSet",ka=!0,Sa="isSet",Ea="booleanEquals",xa="error",Aa="aws.partition",Ta="stringEquals",Ca="getAttr",Ra="name",_a="substring",Pa="bucketSuffix",Oa="parseURL",Ia="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ma="endpoint",Na="tree",Fa="aws.isVirtualHostableS3Bucket",$a="{url#scheme}://{Bucket}.{url#authority}{url#path}",Ua="not",La="{url#scheme}://{url#authority}{url#path}",Da="hardwareType",Ba="regionPrefix",za="bucketAliasSuffix",ja="outpostId",qa="isValidHostLabel",Wa="sigv4a",Ha="s3-outposts",Ka="s3",Va="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Qa="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Ga="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ja="aws.parseArn",Xa="bucketArn",Za="arnType",Ya="s3-object-lambda",ec="accesspoint",tc="accessPointName",rc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",nc="mrapPartition",ic="outpostType",oc="arnPrefix",sc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",cc="https://s3.{partitionResult#dnsSuffix}",uc={[oa]:!1,[sa]:"String"},dc={[oa]:!0,default:!1,[sa]:"Boolean"},lc={[oa]:!1,[sa]:"Boolean"},hc={[ca]:Ea,[ua]:[{[da]:"Accelerate"},!0]},fc={[ca]:Ea,[ua]:[{[da]:"UseFIPS"},!0]},pc={[ca]:Ea,[ua]:[{[da]:"UseDualStack"},!0]},gc={[ca]:Sa,[ua]:[{[da]:"Endpoint"}]},mc={[ca]:Aa,[ua]:[{[da]:"Region"}],[la]:"partitionResult"},yc={[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[{[da]:"partitionResult"},Ra]},"aws-cn"]},vc={[ca]:Sa,[ua]:[{[da]:"Bucket"}]},bc={[da]:"Bucket"},wc={[ca]:Oa,[ua]:[{[da]:"Endpoint"}],[la]:"url"},kc={[ca]:Ea,[ua]:[{[ca]:Ca,[ua]:[{[da]:"url"},"isIp"]},!0]},Sc={[da]:"url"},Ec={[ca]:"uriEncode",[ua]:[bc],[la]:"uri_encoded_bucket"},xc={[pa]:"S3Express",[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:"s3express",[va]:"{Region}"}]},Ac={},Tc={[ca]:Fa,[ua]:[bc,!1]},Cc={[xa]:"S3Express bucket name is not a valid virtual hostable name.",[sa]:xa},Rc={[pa]:"S3Express",[ga]:[{[ma]:!0,[Ra]:"sigv4-s3express",[ya]:"s3express",[va]:"{Region}"}]},_c={[ca]:Sa,[ua]:[{[da]:"UseS3ExpressControlEndpoint"}]},Pc={[ca]:Ea,[ua]:[{[da]:"UseS3ExpressControlEndpoint"},!0]},Oc={[ca]:Ua,[ua]:[gc]},Ic={[xa]:"Unrecognized S3Express bucket name format.",[sa]:xa},Mc={[ca]:Ua,[ua]:[vc]},Nc={[da]:Da},Fc={[aa]:[Oc],[xa]:"Expected a endpoint to be specified but no endpoint was found",[sa]:xa},$c={[ga]:[{[ma]:!0,[Ra]:Wa,[ya]:Ha,[wa]:["*"]},{[ma]:!0,[Ra]:"sigv4",[ya]:Ha,[va]:"{Region}"}]},Uc={[ca]:Ea,[ua]:[{[da]:"ForcePathStyle"},!1]},Lc={[da]:"ForcePathStyle"},Dc={[ca]:Ea,[ua]:[{[da]:"Accelerate"},!1]},Bc={[ca]:Ta,[ua]:[{[da]:"Region"},"aws-global"]},zc={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"us-east-1"}]},jc={[ca]:Ua,[ua]:[Bc]},qc={[ca]:Ea,[ua]:[{[da]:"UseGlobalEndpoint"},!0]},Wc={[ha]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:{[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{Region}"}]},[ba]:{}},Hc={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{Region}"}]},Kc={[ca]:Ea,[ua]:[{[da]:"UseGlobalEndpoint"},!1]},Vc={[ca]:Ea,[ua]:[{[da]:"UseDualStack"},!1]},Qc={[ha]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Gc={[ca]:Ea,[ua]:[{[da]:"UseFIPS"},!1]},Jc={[ha]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Xc={[ha]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Zc={[ca]:Ea,[ua]:[{[ca]:Ca,[ua]:[Sc,"isIp"]},!1]},Yc={[ha]:Va,[fa]:Hc,[ba]:{}},eu={[ha]:$a,[fa]:Hc,[ba]:{}},tu={[Ma]:eu,[sa]:Ma},ru={[ha]:Qa,[fa]:Hc,[ba]:{}},nu={[ha]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},iu={[xa]:"Invalid region: region was not a valid DNS name.",[sa]:xa},ou={[da]:Xa},su={[da]:Za},au={[ca]:Ca,[ua]:[ou,"service"]},cu={[da]:tc},uu={[aa]:[pc],[xa]:"S3 Object Lambda does not support Dual-stack",[sa]:xa},du={[aa]:[hc],[xa]:"S3 Object Lambda does not support S3 Accelerate",[sa]:xa},lu={[aa]:[{[ca]:Sa,[ua]:[{[da]:"DisableAccessPoints"}]},{[ca]:Ea,[ua]:[{[da]:"DisableAccessPoints"},!0]}],[xa]:"Access points are not supported for this operation",[sa]:xa},hu={[aa]:[{[ca]:Sa,[ua]:[{[da]:"UseArnRegion"}]},{[ca]:Ea,[ua]:[{[da]:"UseArnRegion"},!1]},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},"{Region}"]}]}],[xa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[sa]:xa},fu={[ca]:Ca,[ua]:[{[da]:"bucketPartition"},Ra]},pu={[ca]:Ca,[ua]:[ou,"accountId"]},gu={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ya,[va]:"{bucketArn#region}"}]},mu={[xa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[sa]:xa},yu={[xa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[sa]:xa},vu={[xa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[sa]:xa},bu={[xa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[sa]:xa},wu={[xa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[sa]:xa},ku={[xa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[sa]:xa},Su={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ka,[va]:"{bucketArn#region}"}]},Eu={[ga]:[{[ma]:!0,[Ra]:Wa,[ya]:Ha,[wa]:["*"]},{[ma]:!0,[Ra]:"sigv4",[ya]:Ha,[va]:"{bucketArn#region}"}]},xu={[ca]:Ja,[ua]:[bc]},Au={[ha]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Tu={[ha]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Cu={[ha]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Ru={[ha]:sc,[fa]:Hc,[ba]:{}},_u={[ha]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:Hc,[ba]:{}},Pu={[da]:"UseObjectLambdaEndpoint"},Ou={[ga]:[{[ma]:!0,[Ra]:"sigv4",[ya]:Ya,[va]:"{Region}"}]},Iu={[ha]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Mu={[ha]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Nu={[ha]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Fu={[ha]:La,[fa]:Hc,[ba]:{}},$u={[ha]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[fa]:Hc,[ba]:{}},Uu=[{[da]:"Region"}],Lu=[{[da]:"Endpoint"}],Du=[bc],Bu=[pc],zu=[hc],ju=[gc,wc],qu=[{[ca]:Sa,[ua]:[{[da]:"DisableS3ExpressSessionAuth"}]},{[ca]:Ea,[ua]:[{[da]:"DisableS3ExpressSessionAuth"},!0]}],Wu=[kc],Hu=[Ec],Ku=[Tc],Vu=[fc],Qu=[{[ca]:_a,[ua]:[bc,6,14,!0],[la]:"s3expressAvailabilityZoneId"},{[ca]:_a,[ua]:[bc,14,16,!0],[la]:"s3expressAvailabilityZoneDelim"},{[ca]:Ta,[ua]:[{[da]:"s3expressAvailabilityZoneDelim"},"--"]}],Gu=[{[aa]:[fc],[Ma]:{[ha]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:xc,[ba]:{}},[sa]:Ma},{[Ma]:{[ha]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:xc,[ba]:{}},[sa]:Ma}],Ju=[{[ca]:_a,[ua]:[bc,6,15,!0],[la]:"s3expressAvailabilityZoneId"},{[ca]:_a,[ua]:[bc,15,17,!0],[la]:"s3expressAvailabilityZoneDelim"},{[ca]:Ta,[ua]:[{[da]:"s3expressAvailabilityZoneDelim"},"--"]}],Xu=[{[aa]:[fc],[Ma]:{[ha]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:Rc,[ba]:{}},[sa]:Ma},{[Ma]:{[ha]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[fa]:Rc,[ba]:{}},[sa]:Ma}],Zu=[vc],Yu=[{[ca]:qa,[ua]:[{[da]:ja},!1]}],ed=[{[ca]:Ta,[ua]:[{[da]:Ba},"beta"]}],td=[mc],rd=[{[ca]:qa,[ua]:[{[da]:"Region"},!1]}],nd=[{[ca]:Ta,[ua]:[{[da]:"Region"},"us-east-1"]}],id=[{[ca]:Ta,[ua]:[su,ec]}],od=[{[ca]:Ca,[ua]:[ou,"resourceId[1]"],[la]:tc},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[cu,""]}]}],sd=[ou,"resourceId[1]"],ad=[{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},""]}]}],cd=[{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[{[ca]:Ca,[ua]:[ou,"resourceId[2]"]}]}]}],ud=[ou,"resourceId[2]"],dd=[{[ca]:Aa,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]}],[la]:"bucketPartition"}],ld=[{[ca]:Ta,[ua]:[fu,{[ca]:Ca,[ua]:[{[da]:"partitionResult"},Ra]}]}],hd=[{[ca]:qa,[ua]:[{[ca]:Ca,[ua]:[ou,"region"]},!0]}],fd=[{[ca]:qa,[ua]:[pu,!1]}],pd=[{[ca]:qa,[ua]:[cu,!1]}],gd=[{[ca]:qa,[ua]:[{[da]:"Region"},!0]}],md={version:"1.0",parameters:{Bucket:uc,Region:uc,UseFIPS:dc,UseDualStack:dc,Endpoint:uc,ForcePathStyle:dc,Accelerate:dc,UseGlobalEndpoint:dc,UseObjectLambdaEndpoint:lc,Key:uc,Prefix:uc,CopySource:uc,DisableAccessPoints:lc,DisableMultiRegionAccessPoints:dc,UseArnRegion:lc,UseS3ExpressControlEndpoint:lc,DisableS3ExpressSessionAuth:lc},rules:[{[aa]:[{[ca]:Sa,[ua]:Uu}],rules:[{[aa]:[hc,fc],error:"Accelerate cannot be used with FIPS",[sa]:xa},{[aa]:[pc,gc],error:"Cannot set dual-stack in combination with a custom endpoint.",[sa]:xa},{[aa]:[gc,fc],error:"A custom endpoint cannot be combined with FIPS",[sa]:xa},{[aa]:[gc,hc],error:"A custom endpoint cannot be combined with S3 Accelerate",[sa]:xa},{[aa]:[fc,mc,yc],error:"Partition does not support FIPS",[sa]:xa},{[aa]:[vc,{[ca]:_a,[ua]:[bc,0,6,ka],[la]:Pa},{[ca]:Ta,[ua]:[{[da]:Pa},"--x-s3"]}],rules:[{[aa]:Bu,error:"S3Express does not support Dual-stack.",[sa]:xa},{[aa]:zu,error:"S3Express does not support S3 Accelerate.",[sa]:xa},{[aa]:ju,rules:[{[aa]:qu,rules:[{[aa]:Wu,rules:[{[aa]:Hu,rules:[{endpoint:{[ha]:Ia,[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{endpoint:{[ha]:$a,[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na},Cc],[sa]:Na},{[aa]:Wu,rules:[{[aa]:Hu,rules:[{endpoint:{[ha]:Ia,[fa]:Rc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{endpoint:{[ha]:$a,[fa]:Rc,[ba]:Ac},[sa]:Ma}],[sa]:Na},Cc],[sa]:Na},{[aa]:[_c,Pc],rules:[{[aa]:[Ec,Oc],rules:[{[aa]:Vu,endpoint:{[ha]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[fa]:xc,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na}],[sa]:Na},{[aa]:Ku,rules:[{[aa]:qu,rules:[{[aa]:Qu,rules:Gu,[sa]:Na},{[aa]:Ju,rules:Gu,[sa]:Na},Ic],[sa]:Na},{[aa]:Qu,rules:Xu,[sa]:Na},{[aa]:Ju,rules:Xu,[sa]:Na},Ic],[sa]:Na},Cc],[sa]:Na},{[aa]:[Mc,_c,Pc],rules:[{[aa]:ju,endpoint:{[ha]:La,[fa]:xc,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://s3express-control-fips.{Region}.amazonaws.com",[fa]:xc,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3express-control.{Region}.amazonaws.com",[fa]:xc,[ba]:Ac},[sa]:Ma}],[sa]:Na},{[aa]:[vc,{[ca]:_a,[ua]:[bc,49,50,ka],[la]:Da},{[ca]:_a,[ua]:[bc,8,12,ka],[la]:Ba},{[ca]:_a,[ua]:[bc,0,7,ka],[la]:za},{[ca]:_a,[ua]:[bc,32,49,ka],[la]:ja},{[ca]:Aa,[ua]:Uu,[la]:"regionPartition"},{[ca]:Ta,[ua]:[{[da]:za},"--op-s3"]}],rules:[{[aa]:Yu,rules:[{[aa]:[{[ca]:Ta,[ua]:[Nc,"e"]}],rules:[{[aa]:ed,rules:[Fc,{[aa]:ju,endpoint:{[ha]:"https://{Bucket}.ec2.{url#authority}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{endpoint:{[ha]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{[aa]:[{[ca]:Ta,[ua]:[Nc,"o"]}],rules:[{[aa]:ed,rules:[Fc,{[aa]:ju,endpoint:{[ha]:"https://{Bucket}.op-{outpostId}.{url#authority}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{endpoint:{[ha]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[fa]:$c,[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[sa]:xa}],[sa]:Na},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[sa]:xa}],[sa]:Na},{[aa]:Zu,rules:[{[aa]:[gc,{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[{[ca]:Oa,[ua]:Lu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[sa]:xa},{[aa]:[Uc,Tc],rules:[{[aa]:td,rules:[{[aa]:rd,rules:[{[aa]:[hc,yc],error:"S3 Accelerate cannot be used in this region",[sa]:xa},{[aa]:[pc,fc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,fc,Dc,Oc,jc,qc],rules:[{endpoint:Wc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,fc,Dc,Oc,jc,Kc],endpoint:Wc,[sa]:Ma},{[aa]:[Vc,fc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,fc,Dc,Oc,jc,qc],rules:[{endpoint:Qc,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,fc,Dc,Oc,jc,Kc],endpoint:Qc,[sa]:Ma},{[aa]:[pc,Gc,hc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Gc,hc,Oc,jc,qc],rules:[{endpoint:Jc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Gc,hc,Oc,jc,Kc],endpoint:Jc,[sa]:Ma},{[aa]:[pc,Gc,Dc,Oc,Bc],endpoint:{[ha]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Gc,Dc,Oc,jc,qc],rules:[{endpoint:Xc,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Gc,Dc,Oc,jc,Kc],endpoint:Xc,[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,kc,Bc],endpoint:{[ha]:Va,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,Bc],endpoint:{[ha]:$a,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,kc,jc,qc],rules:[{[aa]:nd,endpoint:Yc,[sa]:Ma},{endpoint:Yc,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,jc,qc],rules:[{[aa]:nd,endpoint:eu,[sa]:Ma},tu],[sa]:Na},{[aa]:[Vc,Gc,Dc,gc,wc,kc,jc,Kc],endpoint:Yc,[sa]:Ma},{[aa]:[Vc,Gc,Dc,gc,wc,Zc,jc,Kc],endpoint:eu,[sa]:Ma},{[aa]:[Vc,Gc,hc,Oc,Bc],endpoint:{[ha]:Qa,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,hc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:ru,[sa]:Ma},{endpoint:ru,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,hc,Oc,jc,Kc],endpoint:ru,[sa]:Ma},{[aa]:[Vc,Gc,Dc,Oc,Bc],endpoint:{[ha]:Ga,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Gc,Dc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:Ga,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:nu,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Gc,Dc,Oc,jc,Kc],endpoint:nu,[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[gc,wc,{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[Sc,"scheme"]},"http"]},{[ca]:Fa,[ua]:[bc,ka]},Uc,Gc,Vc,Dc],rules:[{[aa]:td,rules:[{[aa]:rd,rules:[tu],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[Uc,{[ca]:Ja,[ua]:Du,[la]:Xa}],rules:[{[aa]:[{[ca]:Ca,[ua]:[ou,"resourceId[0]"],[la]:Za},{[ca]:Ua,[ua]:[{[ca]:Ta,[ua]:[su,""]}]}],rules:[{[aa]:[{[ca]:Ta,[ua]:[au,Ya]}],rules:[{[aa]:id,rules:[{[aa]:od,rules:[uu,du,{[aa]:ad,rules:[lu,{[aa]:cd,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:ld,rules:[{[aa]:hd,rules:[{[aa]:[{[ca]:Ta,[ua]:[pu,""]}],error:"Invalid ARN: Missing account id",[sa]:xa},{[aa]:fd,rules:[{[aa]:pd,rules:[{[aa]:ju,endpoint:{[ha]:rc,[fa]:gu,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:gu,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:gu,[ba]:Ac},[sa]:Ma}],[sa]:Na},mu],[sa]:Na},yu],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},wu],[sa]:Na},{error:"Invalid ARN: bucket ARN is missing a region",[sa]:xa}],[sa]:Na},ku],[sa]:Na},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[sa]:xa}],[sa]:Na},{[aa]:id,rules:[{[aa]:od,rules:[{[aa]:ad,rules:[{[aa]:id,rules:[{[aa]:ad,rules:[lu,{[aa]:cd,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:[{[ca]:Ta,[ua]:[fu,"{partitionResult#name}"]}],rules:[{[aa]:hd,rules:[{[aa]:[{[ca]:Ta,[ua]:[au,Ka]}],rules:[{[aa]:fd,rules:[{[aa]:pd,rules:[{[aa]:zu,error:"Access Points do not support S3 Accelerate",[sa]:xa},{[aa]:[fc,pc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[fc,Vc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,pc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,gc,wc],endpoint:{[ha]:rc,[fa]:Su,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc],endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Su,[ba]:Ac},[sa]:Ma}],[sa]:Na},mu],[sa]:Na},yu],[sa]:Na},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[sa]:xa}],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},wu],[sa]:Na}],[sa]:Na}],[sa]:Na},{[aa]:[{[ca]:qa,[ua]:[cu,ka]}],rules:[{[aa]:Bu,error:"S3 MRAP does not support dual-stack",[sa]:xa},{[aa]:Vu,error:"S3 MRAP does not support FIPS",[sa]:xa},{[aa]:zu,error:"S3 MRAP does not support S3 Accelerate",[sa]:xa},{[aa]:[{[ca]:Ea,[ua]:[{[da]:"DisableMultiRegionAccessPoints"},ka]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[sa]:xa},{[aa]:[{[ca]:Aa,[ua]:Uu,[la]:nc}],rules:[{[aa]:[{[ca]:Ta,[ua]:[{[ca]:Ca,[ua]:[{[da]:nc},Ra]},{[ca]:Ca,[ua]:[ou,"partition"]}]}],rules:[{endpoint:{[ha]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[fa]:{[ga]:[{[ma]:ka,name:Wa,[ya]:Ka,[wa]:["*"]}]},[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[sa]:xa}],[sa]:Na}],[sa]:Na},{error:"Invalid Access Point Name",[sa]:xa}],[sa]:Na},ku],[sa]:Na},{[aa]:[{[ca]:Ta,[ua]:[au,Ha]}],rules:[{[aa]:Bu,error:"S3 Outposts does not support Dual-stack",[sa]:xa},{[aa]:Vu,error:"S3 Outposts does not support FIPS",[sa]:xa},{[aa]:zu,error:"S3 Outposts does not support S3 Accelerate",[sa]:xa},{[aa]:[{[ca]:Sa,[ua]:[{[ca]:Ca,[ua]:[ou,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[sa]:xa},{[aa]:[{[ca]:Ca,[ua]:sd,[la]:ja}],rules:[{[aa]:Yu,rules:[hu,{[aa]:dd,rules:[{[aa]:td,rules:[{[aa]:ld,rules:[{[aa]:hd,rules:[{[aa]:fd,rules:[{[aa]:[{[ca]:Ca,[ua]:ud,[la]:ic}],rules:[{[aa]:[{[ca]:Ca,[ua]:[ou,"resourceId[3]"],[la]:tc}],rules:[{[aa]:[{[ca]:Ta,[ua]:[{[da]:ic},ec]}],rules:[{[aa]:ju,endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[fa]:Eu,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[fa]:Eu,[ba]:Ac},[sa]:Ma}],[sa]:Na},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: expected an access point name",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: Expected a 4-component resource",[sa]:xa}],[sa]:Na},yu],[sa]:Na},vu],[sa]:Na},bu],[sa]:Na}],[sa]:Na}],[sa]:Na},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: The Outpost Id was not set",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[sa]:xa}],[sa]:Na},{error:"Invalid ARN: No ARN type specified",[sa]:xa}],[sa]:Na},{[aa]:[{[ca]:_a,[ua]:[bc,0,4,!1],[la]:oc},{[ca]:Ta,[ua]:[{[da]:oc},"arn:"]},{[ca]:Ua,[ua]:[{[ca]:Sa,[ua]:[xu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[sa]:xa},{[aa]:[{[ca]:Ea,[ua]:[Lc,ka]},xu],error:"Path-style addressing cannot be used with ARN buckets",[sa]:xa},{[aa]:Hu,rules:[{[aa]:td,rules:[{[aa]:[Dc],rules:[{[aa]:[pc,Oc,fc,Bc],endpoint:{[ha]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Oc,fc,jc,qc],rules:[{endpoint:Au,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Oc,fc,jc,Kc],endpoint:Au,[sa]:Ma},{[aa]:[Vc,Oc,fc,Bc],endpoint:{[ha]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Oc,fc,jc,qc],rules:[{endpoint:Tu,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Oc,fc,jc,Kc],endpoint:Tu,[sa]:Ma},{[aa]:[pc,Oc,Gc,Bc],endpoint:{[ha]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[pc,Oc,Gc,jc,qc],rules:[{endpoint:Cu,[sa]:Ma}],[sa]:Na},{[aa]:[pc,Oc,Gc,jc,Kc],endpoint:Cu,[sa]:Ma},{[aa]:[Vc,gc,wc,Gc,Bc],endpoint:{[ha]:sc,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,gc,wc,Gc,jc,qc],rules:[{[aa]:nd,endpoint:Ru,[sa]:Ma},{endpoint:Ru,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,gc,wc,Gc,jc,Kc],endpoint:Ru,[sa]:Ma},{[aa]:[Vc,Oc,Gc,Bc],endpoint:{[ha]:ac,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Vc,Oc,Gc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:ac,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:_u,[sa]:Ma}],[sa]:Na},{[aa]:[Vc,Oc,Gc,jc,Kc],endpoint:_u,[sa]:Ma}],[sa]:Na},{error:"Path-style addressing cannot be used with S3 Accelerate",[sa]:xa}],[sa]:Na}],[sa]:Na}],[sa]:Na},{[aa]:[{[ca]:Sa,[ua]:[Pu]},{[ca]:Ea,[ua]:[Pu,ka]}],rules:[{[aa]:td,rules:[{[aa]:gd,rules:[uu,du,{[aa]:ju,endpoint:{[ha]:La,[fa]:Ou,[ba]:Ac},[sa]:Ma},{[aa]:Vu,endpoint:{[ha]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[fa]:Ou,[ba]:Ac},[sa]:Ma},{endpoint:{[ha]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[fa]:Ou,[ba]:Ac},[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na},{[aa]:[Mc],rules:[{[aa]:td,rules:[{[aa]:gd,rules:[{[aa]:[fc,pc,Oc,Bc],endpoint:{[ha]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[fc,pc,Oc,jc,qc],rules:[{endpoint:Iu,[sa]:Ma}],[sa]:Na},{[aa]:[fc,pc,Oc,jc,Kc],endpoint:Iu,[sa]:Ma},{[aa]:[fc,Vc,Oc,Bc],endpoint:{[ha]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[fc,Vc,Oc,jc,qc],rules:[{endpoint:Mu,[sa]:Ma}],[sa]:Na},{[aa]:[fc,Vc,Oc,jc,Kc],endpoint:Mu,[sa]:Ma},{[aa]:[Gc,pc,Oc,Bc],endpoint:{[ha]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,pc,Oc,jc,qc],rules:[{endpoint:Nu,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,pc,Oc,jc,Kc],endpoint:Nu,[sa]:Ma},{[aa]:[Gc,Vc,gc,wc,Bc],endpoint:{[ha]:La,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,gc,wc,jc,qc],rules:[{[aa]:nd,endpoint:Fu,[sa]:Ma},{endpoint:Fu,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,Vc,gc,wc,jc,Kc],endpoint:Fu,[sa]:Ma},{[aa]:[Gc,Vc,Oc,Bc],endpoint:{[ha]:cc,[fa]:zc,[ba]:Ac},[sa]:Ma},{[aa]:[Gc,Vc,Oc,jc,qc],rules:[{[aa]:nd,endpoint:{[ha]:cc,[fa]:Hc,[ba]:Ac},[sa]:Ma},{endpoint:$u,[sa]:Ma}],[sa]:Na},{[aa]:[Gc,Vc,Oc,jc,Kc],endpoint:$u,[sa]:Ma}],[sa]:Na},iu],[sa]:Na}],[sa]:Na}],[sa]:Na},{error:"A region must be set when sending requests to S3.",[sa]:xa}]},yd=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),vd=(e,t={})=>yd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Lo} Initial EndpointParams: ${Do(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Bo(`Missing required parameter: '${e}'`);const c=rs(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Lo} Resolved endpoint: ${Do(c)}`),c})(md,{endpointParams:e,logger:t.logger})));Uo.aws=os;const bd=(wd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await wd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Rs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var wd;function kd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function Sd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Ed=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(vd,(e=>{const t=[];return e.operation,t.push(kd(e)),t.push(Sd(e)),t}),{"aws.auth#sigv4":kd,"aws.auth#sigv4a":Sd}),xd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},Ad={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"}};class Td extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Td{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Td{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class _d extends Td{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Pd extends Td{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Pd.prototype)}}class Od extends Td{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Id,Md;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Md||(Md={}));class Nd extends Td{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Fd extends Td{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}class $d extends Td{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,$d.prototype)}}const Ud=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:Ud(e.Credentials)}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Bd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),zd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class jd extends Td{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Td{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Td{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Td{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}class Kd extends Td{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Kd.prototype)}}var Vd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Vd||(Vd={}));const Qd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Jd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[np]:e[ef],[Cp]:e[tf],[Rp]:e[af],[Pp]:e[sf],[_p]:[()=>Wr(e[Nl]),()=>e[Nl].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Vf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[fp]:e[Ah],[Ep]:e[Vh],[Xf]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[sp]:e[nh],[Of]:e[ph],[lp]:[()=>Wr(e[gh]),()=>pr(e[gh]).toString()],[hp]:[()=>Wr(e[mh]),()=>e[mh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"DeleteObject"],[Gf]:[,e[hf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Of]:e[ph],[If]:[()=>Wr(e[yh]),()=>pr(e[yh]).toString()],[Mf]:e[vh],[Nf]:[()=>Wr(e[kh]),()=>pr(e[kh]).toString()],[Bf]:e[Lh],[Op]:e[rf],[Ip]:e[nf],[Mp]:e[of],[Ep]:e[Vh],[sp]:e[nh],[ep]:e[Wl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"GetObject"],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[,e[Wh]],[Kf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Hh]).toString()],[Gf]:[,e[hf]],[Lf]:[()=>void 0!==e.PartNumber,()=>e[Uh].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Ep]:e[Vh],[sp]:e[nh],[bp]:[()=>Wr(e[Nh]),()=>(e[Nh]||[]).map(Zr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[$f]:[,"2"],[Af]:[,e[Yl]],[Cf]:[,e[oh]],[Uf]:[()=>void 0!==e.MaxKeys,()=>e[Th].toString()],[Df]:[,e[Fh]],[xf]:[,e[Xl]],[Pf]:[()=>void 0!==e.FetchOwner,()=>e[ch].toString()],[Qf]:[,e[Xh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},el=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Ef]:e[Jl]||"application/octet-stream",[Jf]:e[_l],[mf]:e[Ul],[yf]:e[Bl],[vf]:e[zl],[bf]:e[jl],[wf]:[()=>Wr(e[ql]),()=>e[ql].toString()],[kf]:e[Hl],[Tp]:e[$l],[Zf]:e[Ll],[Yf]:e[Dl],[tp]:e[Ql],[rp]:e[Gl],[Tf]:[()=>Wr(e[rh]),()=>pr(e[rh]).toString()],[Of]:e[ph],[Mf]:e[vh],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[dp]:e[hh],[Up]:[()=>Wr(e[ff]),()=>e[ff].toString()],[Cp]:e[tf],[Ap]:e[Yh],[Lp]:e[pf],[Op]:e[rf],[Ip]:e[nf],[Mp]:e[of],[Rp]:e[af],[Pp]:e[sf],[_p]:[()=>Wr(e[Nl]),()=>e[Nl].toString()],[Ep]:e[Vh],[Np]:e[df],[yp]:e[Ih],[vp]:[()=>Wr(e[Mh]),()=>{return(t=e[Mh],t.toISOString().replace(".000Z","Z")).toString();var t}],[mp]:e[Oh],[sp]:e[nh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Dp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[tf]:[,e.headers[Cp]],[af]:[,e.headers[Rp]],[sf]:[,e.headers[Pp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])]}),n=rr(nr(await wi(e.body,t)),"body");return null!=n[Fl]&&(r[Fl]=Cl(n[Fl])),r},rl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[eh]:[()=>void 0!==e.headers[ip],()=>Vt(e.headers[ip])],[hf]:[,e.headers[$p]],[Dh]:[,e.headers[Sp]]});return await Xe(e.body,t),r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[eh]:[()=>void 0!==e.headers[ip],()=>Vt(e.headers[ip])],[Ol]:[,e.headers[gf]],[ah]:[,e.headers[op]],[Jh]:[,e.headers[kp]],[xh]:[()=>void 0!==e.headers[Ff],()=>rr(wr(e.headers[Ff]))],[ql]:[()=>void 0!==e.headers[wf],()=>ar(e.headers[wf])],[sh]:[,e.headers[Rf]],[Ll]:[,e.headers[Zf]],[Dl]:[,e.headers[Yf]],[Ql]:[,e.headers[tp]],[Gl]:[,e.headers[rp]],[Ch]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[hf]:[,e.headers[$p]],[Ul]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[jl]:[,e.headers[bf]],[Vl]:[,e.headers[Sf]],[Jl]:[,e.headers[Ef]],[rh]:[()=>void 0!==e.headers[Tf],()=>rr(wr(e.headers[Tf]))],[ih]:[,e.headers[_f]],[pf]:[,e.headers[Lp]],[tf]:[,e.headers[Cp]],[rf]:[,e.headers[Op]],[of]:[,e.headers[Mp]],[af]:[,e.headers[Rp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])],[Yh]:[,e.headers[Ap]],[Dh]:[,e.headers[Sp]],[Qh]:[,e.headers[xp]],[$h]:[()=>void 0!==e.headers[gp],()=>cr(e.headers[gp])],[lf]:[()=>void 0!==e.headers[Fp],()=>cr(e.headers[Fp])],[Ih]:[,e.headers[yp]],[Mh]:[()=>void 0!==e.headers[vp],()=>rr(mr(e.headers[vp]))],[Oh]:[,e.headers[mp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[Dh]:[,e.headers[Sp]]}),n=rr(nr(await wi(e.body,t)),"body");return""===n.CommonPrefixes?r[Kl]=[]:null!=n[Kl]&&(r[Kl]=Sl(jr(n[Kl]))),""===n.Contents?r[Zl]=[]:null!=n[Zl]&&(r[Zl]=xl(jr(n[Zl]))),null!=n[Xl]&&(r[Xl]=ir(n[Xl])),null!=n[Yl]&&(r[Yl]=ir(n[Yl])),null!=n[oh]&&(r[oh]=ir(n[oh])),null!=n[wh]&&(r[wh]=Vt(n[wh])),null!=n[Eh]&&(r[Eh]=cr(n[Eh])),null!=n[Th]&&(r[Th]=cr(n[Th])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[_h]&&(r[_h]=ir(n[_h])),null!=n[Fh]&&(r[Fh]=ir(n[Fh])),null!=n[Xh]&&(r[Xh]=ir(n[Xh])),r},ol=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return sl(e,t);const r=Vr({$metadata:Rl(e),[ah]:[,e.headers[op]],[sh]:[,e.headers[Rf]],[Ll]:[,e.headers[Zf]],[Dl]:[,e.headers[Yf]],[Ql]:[,e.headers[tp]],[Gl]:[,e.headers[rp]],[tf]:[,e.headers[Cp]],[hf]:[,e.headers[$p]],[rf]:[,e.headers[Op]],[of]:[,e.headers[Mp]],[af]:[,e.headers[Rp]],[sf]:[,e.headers[Pp]],[Nl]:[()=>void 0!==e.headers[_p],()=>Vt(e.headers[_p])],[uf]:[()=>void 0!==e.headers[wp],()=>ar(e.headers[wp])],[Dh]:[,e.headers[Sp]]});return await Xe(e.body,t),r},sl=async(e,t)=>{const r={...e,body:await ki(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await yl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await wl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await ul(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await dl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await gl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await hl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await ml(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await vl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await ll(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await fl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await pl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await kl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await bl(r,t);default:const i=r.body;return al({output:e,parsedBody:i,errorCode:n})}},al=(cl=Td,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:cl,errorCode:r})});var cl;const ul=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Rl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new Pd({$metadata:Rl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Rl(e),...r});return Mr(n,e.body)},hl=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Il]&&(r[Il]=ir(n[Il])),null!=n[Yh]&&(r[Yh]=ir(n[Yh]));const i=new Nd({$metadata:Rl(e),...r});return Mr(i,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Rl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Rl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Rl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Rl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Rl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new $d({$metadata:Rl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Kd({$metadata:Rl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Rl(e),...r});return Mr(n,e.body)},kl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Rl(e),...r});return Mr(n,e.body)},Sl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Fh]&&(t[Fh]=ir(e[Fh])),t})(e))),El=(e,t)=>{const r={};return null!=e[Sh]&&(r[Sh]=ir(e[Sh])),null!=e[xh]&&(r[xh]=rr(mr(e[xh]))),null!=e[sh]&&(r[sh]=ir(e[sh])),""===e.ChecksumAlgorithm?r[$l]=[]:null!=e[$l]&&(r[$l]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[$l]))),null!=e[uf]&&(r[uf]=ar(e[uf])),null!=e[Yh]&&(r[Yh]=ir(e[Yh])),null!=e[Ph]&&(r[Ph]=Al(e[Ph])),null!=e[Gh]&&(r[Gh]=Tl(e[Gh])),r},xl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>El(e))),Al=(e,t)=>{const r={};return null!=e[th]&&(r[th]=ir(e[th])),null!=e[fh]&&(r[fh]=ir(e[fh])),r},Tl=(e,t)=>{const r={};return null!=e[bh]&&(r[bh]=Vt(e[bh])),null!=e[Kh]&&(r[Kh]=rr(mr(e[Kh]))),r},Cl=(e,t)=>{const r={};return null!=e[Pl]&&(r[Pl]=ir(e[Pl])),null!=e[Zh]&&(r[Zh]=ir(e[Zh])),null!=e[cf]&&(r[cf]=ir(e[cf])),null!=e[ah]&&(r[ah]=rr(mr(e[ah]))),r},Rl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),_l="ACL",Pl="AccessKeyId",Ol="AcceptRanges",Il="AccessTier",Ml="BypassGovernanceRetention",Nl="BucketKeyEnabled",Fl="Credentials",$l="ChecksumAlgorithm",Ul="CacheControl",Ll="ChecksumCRC32",Dl="ChecksumCRC32C",Bl="ContentDisposition",zl="ContentEncoding",jl="ContentLanguage",ql="ContentLength",Wl="ChecksumMode",Hl="ContentMD5",Kl="CommonPrefixes",Vl="ContentRange",Ql="ChecksumSHA1",Gl="ChecksumSHA256",Jl="ContentType",Xl="ContinuationToken",Zl="Contents",Yl="Delimiter",eh="DeleteMarker",th="DisplayName",rh="Expires",nh="ExpectedBucketOwner",ih="ExpiresString",oh="EncodingType",sh="ETag",ah="Expiration",ch="FetchOwner",uh="GrantFullControl",dh="GrantRead",lh="GrantReadACP",hh="GrantWriteACP",fh="ID",ph="IfMatch",gh="IfMatchLastModifiedTime",mh="IfMatchSize",yh="IfModifiedSince",vh="IfNoneMatch",bh="IsRestoreInProgress",wh="IsTruncated",kh="IfUnmodifiedSince",Sh="Key",Eh="KeyCount",xh="LastModified",Ah="MFA",Th="MaxKeys",Ch="MissingMeta",Rh="Name",_h="NextContinuationToken",Ph="Owner",Oh="ObjectLockLegalHoldStatus",Ih="ObjectLockMode",Mh="ObjectLockRetainUntilDate",Nh="OptionalObjectAttributes",Fh="Prefix",$h="PartsCount",Uh="PartNumber",Lh="Range",Dh="RequestCharged",Bh="ResponseCacheControl",zh="ResponseContentDisposition",jh="ResponseContentEncoding",qh="ResponseContentLanguage",Wh="ResponseContentType",Hh="ResponseExpires",Kh="RestoreExpiryDate",Vh="RequestPayer",Qh="ReplicationStatus",Gh="RestoreStatus",Jh="Restore",Xh="StartAfter",Zh="SecretAccessKey",Yh="StorageClass",ef="SessionMode",tf="ServerSideEncryption",rf="SSECustomerAlgorithm",nf="SSECustomerKey",of="SSECustomerKeyMD5",sf="SSEKMSEncryptionContext",af="SSEKMSKeyId",cf="SessionToken",uf="Size",df="Tagging",lf="TagCount",hf="VersionId",ff="WriteOffsetBytes",pf="WebsiteRedirectLocation",gf="accept-ranges",mf="cache-control",yf="content-disposition",vf="content-encoding",bf="content-language",wf="content-length",kf="content-md5",Sf="content-range",Ef="content-type",xf="continuation-token",Af="delimiter",Tf="expires",Cf="encoding-type",Rf="etag",_f="expiresstring",Pf="fetch-owner",Of="if-match",If="if-modified-since",Mf="if-none-match",Nf="if-unmodified-since",Ff="last-modified",$f="list-type",Uf="max-keys",Lf="partNumber",Df="prefix",Bf="range",zf="response-cache-control",jf="response-content-disposition",qf="response-content-encoding",Wf="response-content-language",Hf="response-content-type",Kf="response-expires",Vf="session",Qf="start-after",Gf="versionId",Jf="x-amz-acl",Xf="x-amz-bypass-governance-retention",Zf="x-amz-checksum-crc32",Yf="x-amz-checksum-crc32c",ep="x-amz-checksum-mode",tp="x-amz-checksum-sha1",rp="x-amz-checksum-sha256",np="x-amz-create-session-mode",ip="x-amz-delete-marker",op="x-amz-expiration",sp="x-amz-expected-bucket-owner",ap="x-amz-grant-full-control",cp="x-amz-grant-read",up="x-amz-grant-read-acp",dp="x-amz-grant-write-acp",lp="x-amz-if-match-last-modified-time",hp="x-amz-if-match-size",fp="x-amz-mfa",pp="x-amz-missing-meta",gp="x-amz-mp-parts-count",mp="x-amz-object-lock-legal-hold",yp="x-amz-object-lock-mode",vp="x-amz-object-lock-retain-until-date",bp="x-amz-optional-object-attributes",wp="x-amz-object-size",kp="x-amz-restore",Sp="x-amz-request-charged",Ep="x-amz-request-payer",xp="x-amz-replication-status",Ap="x-amz-storage-class",Tp="x-amz-sdk-checksum-algorithm",Cp="x-amz-server-side-encryption",Rp="x-amz-server-side-encryption-aws-kms-key-id",_p="x-amz-server-side-encryption-bucket-key-enabled",Pp="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Ip="x-amz-server-side-encryption-customer-key",Mp="x-amz-server-side-encryption-customer-key-md5",Np="x-amz-tagging",Fp="x-amz-tagging-count",$p="x-amz-version-id",Up="x-amz-write-offset-bytes",Lp="x-amz-website-redirect-location",Dp="x-id";class Bp extends(Wt.classBuilder().ep({...Ad,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Dd,Ld).ser(Jd).de(tl).build()){}var zp="3.701.0";function jp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var qp={name:"SHA-1"},Wp={name:"HMAC",hash:qp},Hp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Kp={};function Vp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Kp}var Qp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Vp().crypto.subtle.importKey("raw",Gp(e),Wp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!jp(e)){var t=Gp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Vp().crypto.subtle.sign(Wp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):jp(this.toHash)?Promise.resolve(Hp):Promise.resolve().then((function(){return Vp().crypto.subtle.digest(qp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Gp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Jp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Xp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Jp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Zp=function(){function e(e){if(!Xp(Vp()))throw new Error("SHA1 not supported");this.hash=new Qp(e)}return e.prototype.update=function(e,t){this.hash.update(_i(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Yp={name:"SHA-256"},eg={name:"HMAC",hash:Yp},tg=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]),rg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Pi(e)){var t=_i(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Vp().crypto.subtle.sign(eg,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Pi(this.toHash)?Promise.resolve(tg):Promise.resolve().then((function(){return Vp().crypto.subtle.digest(Yp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Vp().crypto.subtle.importKey("raw",_i(e.secret),eg,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function ng(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ig(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]cg)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===og&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%og>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(sg[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),dg=function(){function e(e){this.secret=e,this.hash=new ug,this.reset()}return e.prototype.update=function(e){if(!Pi(e)&&!this.error)try{this.hash.update(_i(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return ng(this,void 0,void 0,(function(){return ig(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new ug,this.secret){this.outer=new ug;var e=function(e){var t=_i(e);if(t.byteLength>og){var r=new ug;r.update(t),t=r.digest()}var n=new Uint8Array(og);return n.set(t),n}(this.secret),t=new Uint8Array(og);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";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}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[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}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var fg=Yr(hg.exports);const pg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?fg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class gg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&mg(t),new gg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&mg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function mg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class yg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(gg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Rg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Di;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Di).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Mg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Ng(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Fg{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new _g(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const Ug=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Lg=e=>new $g(e);const Dg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Bg=64,zg=[1732584193,4023233417,2562383102,271733878];class jg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Bg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Bg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=Wg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=Wg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=Wg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=Wg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=Wg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=Wg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=Wg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=Wg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=Wg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=Wg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=Wg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=Wg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=Wg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=Wg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=Wg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=Wg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Hg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Hg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Hg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Hg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Hg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Hg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Hg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Hg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Hg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Hg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Hg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Hg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Hg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Hg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Hg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Hg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Kg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Kg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Kg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Kg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Kg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Kg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Kg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Kg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Kg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Kg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Kg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Kg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Kg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Kg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Kg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Kg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Vg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Vg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Vg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Vg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Vg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Vg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Vg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Vg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Vg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Vg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Vg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Vg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Vg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Vg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Vg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Vg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(zg),this.buffer=new DataView(new ArrayBuffer(Bg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function qg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function Wg(e,t,r,n,i,o,s){return qg(t&r|~t&n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return qg(t&n|r&~n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return qg(t^r^n,e,t,i,o,s)}function Vg(e,t,r,n,i,o,s){return qg(r^(t|~n),e,t,i,o,s)}const Qg="function"==typeof TextEncoder?new TextEncoder:null,Gg=e=>{if("string"==typeof e){if(Qg)return Qg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Jg=["in-region","cross-region","mobile","standard","legacy"],Xg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?fg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Zg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Xg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Jg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Te,base64Encoder:e?.base64Encoder??Pe,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??vd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Ed,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ia,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ts,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??_e}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Gg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??pg({serviceId:n.serviceId,clientVersion:zp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Lg,maxAttempts:e?.maxAttempts??3,md5:e?.md5??jg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Ms),sha1:e?.sha1??Zp,sha256:e?.sha256??lg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Dg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Yg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},em=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},tm=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class rm extends qt{constructor(...[e]){const t=Zg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>Cs(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=As(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return gs(t);const e=await t();return gs(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!ps(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Is.ADAPTIVE?new qs(r):new js(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Z)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new fo((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(xd(o),{session:[()=>this,Bp]}),a=((e,t)=>{const r={...Yg(e),...Br(e),...U(e),...em(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...tm(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ls(e),fs)}}))(this.config)),this.middlewareStack.use(ta(this.config)),this.middlewareStack.use(vs(this.config)),this.middlewareStack.use(Zi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Yi)}})),this.middlewareStack.use(ro(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:bd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Io(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(ao(this.config)),this.middlewareStack.use(ko(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(xo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const nm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},im=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?om(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),nm)}});function om(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class sm extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ji(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),im(r),uo()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(zd,Bd).ser(Zd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),_o(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Yd).de(il).build()){}class um extends(Wt.classBuilder().ep({...Ad,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ji(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),io(),_o(r),im(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Gd,Qd).ser(el).de(ol).build()){}class dm{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new cm({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new sm({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class lm extends dm{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new rm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new um({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new rm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new am({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class hm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class fm extends hm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class pm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class gm extends pm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class mm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;!1===(yield this.client.exists(n.substring(0,n.lastIndexOf("/"))))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.client.getFileUploadLink(this.dir+"/"+r);const a=new URL(s);a.search="",s=a.toString();const c=btoa(this.username+":"+this.password),u=yield e.put(s,o,{headers:{Authorization:"Basic "+c},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class ym{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class vm extends ym{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const s=new FormData;s.append("file",o);const a=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,s,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(a.status>=300)||(console.error("Error occurred during file upload:",a),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const bm=["book","config","cover","font"];class wm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new M(t,r):"google"===e?new _(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new lm(t):"webdav"===e?new mm(t):"docker"===e?new vm(t):"boxnet"===e?new E(t,r):"mega"===e?new O(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new fm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new gm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of bm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const km={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},Sm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Em={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function xm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Am={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Tm,Cm={sqlStatement:{createTableStatement:xm({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:xm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:xm({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:xm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:xm({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:xm({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:xm({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:xm(km),getByBookKeyStatement:xm(Sm),getByBookKeysStatement:xm({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:xm(Em)},jsonToSqlite:xm({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:xm(Am)};class Rm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class _m{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Rm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Tm=_m,_m.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},_m.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Tm.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?3e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),_m.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Rm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Tm.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield _m.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),_m.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const Pm=m.cloudUrl,Om=m.cloudCNUrl;class Im{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Om:Pm,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=(new Date).getTime()+31536e9}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Im.requestQueue||(Im.requestQueue=[]),new Promise(((t,r)=>{Im.requestQueue.push({config:e,resolve:t,reject:r}),Im.processingQueue||this.processQueue()}))}))}isTokenValid(){return a(this,void 0,void 0,(function*(){if(!this.accessToken||!this.expiresAt){this.accessToken=yield this.TokenService.getToken("access_token");const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return null!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Im.processingQueue){Im.processingQueue=!0;try{for(;Im.requestQueue.length>0;){const e=Im.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Im.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let n=(yield this.TokenService.getToken("access_token"))||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):t(r.data)})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{let r=yield this.isTokenValid();console.log(r,this.expiresAt,(new Date).getTime()),r||(yield this.refreshUserToken());let n=(yield this.TokenService.getToken("access_token"))||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((r,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const n=JSON.parse(e.data);n.done?(u.close(),r(n)):t(n.data)})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);r(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Im.processingQueue=!1,Im.requestQueue=[];class Mm extends Im{constructor(e,t){super(e,t)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}}class Nm extends Im{constructor(e,t){super(e,t)}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class Um{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"===s.operation||"delete"===s.operation?p[n].upload.push(o):console.info("ignore",a)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time?(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time?h[r].upload.push(i):console.info("ignore",s):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time?(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("update"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Lm=(Dm=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Bm="browser",class extends Dm{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,t,r=!0){let n=JSON.parse(this.getItem("readerConfig")||"{}");n[e]=t,this.setItem("readerConfig",JSON.stringify(n)),r&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:Bm,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Dm,Bm;class zm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield Wm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=jm((new TextEncoder).encode(JSON.stringify(r))),i=jm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${jm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=dy}}function Ly(e){return function(t){return null==t?void 0:t[e]}}var Dy=Ly("byteLength"),By=Uy(Dy),zy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var jy=ey?function(e){return oy?oy(e)&&!Py(e):By(e)&&zy.test(Zm.call(e))}:$y(!1),qy=Ly("length");function Wy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Nv=Iv(Mv),Fv=Iv(lv(Mv)),$v=Vy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Uv=/(.)^/,Lv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Dv=/\\|'|\r|\n|\u2028|\u2029/g;function Bv(e){return"\\"+Lv[e]}var zv=/^\s*(\w|\$)+\s*$/;var jv=0;function qv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=yv(e.prototype),s=e.apply(o,i);return hy(s)?s:o}var Wv=ly((function(e,t){var r=Wv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Vv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Yv=Wv(Zv,2);function eb(e,t,r){t=Rv(t,r);for(var n,i=Hy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Xm.call(n,s,a),Fy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Kv(t)&&Hy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var vb=ly((function(e,t,r){var n,i;return Ay(t)?i=t:(t=bv(t),n=t.slice(0,-1),t=t[t.length-1]),db(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=wv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function bb(e,t){return db(e,xv(t))}function wb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Kv(e)?e:dv(e)).length;ao&&(o=n);else t=Rv(t,r),ub(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var kb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function Sb(e){return e?Oy(e)?Xm.call(e):my(e)?e.match(kb):Kv(e)?db(e,Sv):dv(e):[]}function Eb(e,t,r){if(null==t||r)return Kv(e)||(e=dv(e)),e[Pv(e.length-1)];var n=Sb(e),i=qy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Av(n,t[1])),t=Zy(e)):(n=_b,t=Vv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=db(Vv(t,!1,!1),String),n=function(e,r){return!yb(t,r)}),Pb(e,n,r)}));function Ib(e,t,r){return Xm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Mb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:Ib(e,e.length-t)}function Nb(e,t,r){return Xm.call(e,null==t||r?1:t)}var Fb=ly((function(e,t){return t=Vv(t,!0,!0),pb(e,(function(e){return!yb(t,e)}))})),$b=ly((function(e,t){return Fb(e,t)}));function Ub(e,t,r,n){py(t)||(n=r,r=t,t=!1),null!=r&&(r=Rv(r,n));for(var i=[],o=[],s=0,a=qy(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Ov()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=ly((function(u){return a=this,o=u,i=Ov(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return Wv(t,e)},negate:Xv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Zv,once:Yv,findKey:eb,findIndex:rb,findLastIndex:nb,sortedIndex:ib,indexOf:sb,lastIndexOf:ab,find:cb,detect:cb,findWhere:function(e,t){return cb(e,Ev(t))},each:ub,forEach:ub,map:db,collect:db,reduce:hb,foldl:hb,inject:hb,reduceRight:fb,foldr:fb,filter:pb,select:pb,reject:function(e,t,r){return pb(e,Xv(Rv(t)),r)},every:gb,all:gb,some:mb,any:mb,contains:yb,includes:yb,include:yb,invoke:vb,pluck:bb,where:function(e,t){return pb(e,Ev(t))},max:wb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=Kv(e)?e:dv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Kb=e=>e.map((e=>e.author||"")),Vb=e=>e.map((e=>e.key)),Qb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Gb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Qb(i,n).reverse():Qb(i,n);if(2===t.sort){let r=Hb(e),n=Hb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Qb(n,r).reverse():Qb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Vb(e);return 1===t.order?Qb(Wb.union(n,i),i).reverse():Qb(Wb.union(n,i),i)}if(5===t.sort){let r=Kb(e),n=Kb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Qb(n,r).reverse():Qb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Vb(e);return 1===t.order?Qb(n,i).reverse():Qb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?Wb.sortBy(n,"chapterIndex"):Wb.sortBy(n,"chapterIndex").reverse();let i=Wb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=Wb.clone(e).reverse(),i=Wb.uniq(e.map((e=>{let t=Wb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=Wb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=Wb.clone(e).reverse(),n=Wb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?Wb.sortBy(n,"chapterIndex"):Wb.sortBy(n,"chapterIndex").reverse();let i=Wb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Jb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};margin-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Xb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{_m as BookHelper,g as CommonTool,Lm as ConfigService,b as KookitConfig,$m as LoginHelper,Mm as ReaderRequest,Xb as SearchUtil,Gb as SortUtil,Cm as SqlStatement,Jb as StyleHelper,Um as SyncHelper,wm as SyncUtil,Nm as ThirdpartyRequest,zm as TokenService,Fm as UserRequest}; diff --git a/src/assets/lib/kookit-extra.min.mjs b/src/assets/lib/kookit-extra.min.mjs index 601d236c..ef515938 100644 --- a/src/assets/lib/kookit-extra.min.mjs +++ b/src/assets/lib/kookit-extra.min.mjs @@ -1 +1 @@ -import e from"axios";import t from"fs";import r from"path";import{promisify as i}from"util";import o from"stream";import{Client as s}from"basic-ftp";import{S3Client as n,ListObjectsV2Command as a,DeleteObjectCommand as d,PutObjectCommand as l,GetObjectCommand as c}from"@aws-sdk/client-s3";import{createClient as h,AuthType as u}from"webdav";import p from"ssh2-sftp-client";import f from"form-data";import{Storage as y}from"megajs";import g from"crypto";import{SSE as m}from"sse.js";import k from"electron-store";import v from"node-machine-id";function T(e,t,r,i){return new(r||(r=Promise))((function(o,s){function n(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,a)}d((i=i.apply(e,t||[])).next())}))}const b=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,w={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class F{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${x}&redirect_uri=${e}`}}const L=i(o.pipeline);class j extends Q{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield L(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class D{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s;return a.ftp.verbose=!0,yield a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),this.client=a,a}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class U{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${I}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const B=209715200;class W extends U{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();for(o=this.baseFolder+"/"+o;o.startsWith("/");)o=o.substring(1);const a=r.join(this.storagePath,i),d=yield this.getFileSize(a),l=o.split(".").pop(),c=(b(l||""),`${this.baseUrl}:/${o}:/createUploadSession`),h=(yield e.post(c,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(a,"r");let u=0,p=Buffer.alloc(B);for(;uthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();for(i=this.baseFolder+"/"+i;i.startsWith("/");)i=i.substring(1);const n=`${this.baseUrl}:/${i}:/content`;let a=(yield fetch(n,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(a){const i=yield e.get(a,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class M{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${$}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class N extends M{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class K{constructor(e){this.config=e,this.taskQueue=new F(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class q extends K{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class J{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new F(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{!1===(yield this.client.exists(r.dirname(this.dir+"/"+o)))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let s=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(s),new Promise(((n,a)=>{s.on("finish",(()=>{n(!0)})),s.on("error",(s=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",s);try{let s=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,s,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});n(!0)}catch(e){console.error("Error occurred during file upload:",e),n(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class H{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${R}&redirect_uri=${e}&force_confirm=true`}}const V=i(o.pipeline);class X extends H{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();for(o=this.baseFolder+"/"+o;o.startsWith("/");)o=o.substring(1);const n=o.substring(0,o.lastIndexOf("/"));if(n){if(!(yield this.ensureDirectoryExists(n)))return console.error("Failed to create directory:",n),!1}const a=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${o}`,overwrite:!0}});if(200!==a.status)return console.error("Error getting upload URL:",a),!1;const d=a.data.href,l=t.createReadStream(r.join(this.storagePath,i));return yield e.put(d,l,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){for(this.taskQueue.setDownloadedSize(0),i=this.baseFolder+"/"+i;i.startsWith("/");)i=i.substring(1);try{const s=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${i}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield V(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class Y{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new F(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p;return yield s.connect({host:e,port:o,username:t,password:r}),this.client=s,s}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class G{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class Z{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:P,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class ee extends Z{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class te{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class re extends te{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class ie{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:z,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class oe extends ie{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class se{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new F(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${O}&response_type=code&redirect_uri=${e}`}}class ne extends se{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class ae{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${A}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const de=4194304;class le extends ae{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*de,i=Math.min(de,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class ce{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new F(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const he=i(o.pipeline);class ue extends ce{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield he(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class pe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${C}&response_type=code&redirect_uri=${e}`}}class fe extends pe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ye=["book","config","cover","font"];class ge{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new j(t,r,i):"microsoft"===e?new W(t,r,i):"google"===e?new N(t,r,i):"microsoft_exp"===e?new W(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new N(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new q(t,r):"webdav"===e?new J(t,r):"docker"===e?new ue(t,r):"ftp"===e?new D(t,r):"sftp"===e?new Y(t,r):"boxnet"===e?new ee(t,r,i):"mega"===e?new re(t,r):"adrive"===e?new oe(t,r,i):"pcloud"===e?new ne(t,r,i):"dubox"===e?new le(t,r,i):"yandex"===e?new X(t,r,i):"yiyiwu"===e?new fe(t,r,i):new G}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ye){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const me={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ke={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},ve={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function Te(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const be={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var we={sqlStatement:{createTableStatement:Te({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:Te({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:Te({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:Te({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:Te({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:Te({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:Te({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:Te(me),getByBookKeyStatement:Te(ke),getByBookKeysStatement:Te({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:Te(ve)},jsonToSqlite:Te({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:Te(be)};const Fe=S,Se=_;class _e{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Se:Fe,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return _e.requestQueue||(_e.requestQueue=[]),new Promise(((t,r)=>{_e.requestQueue.push({config:e,resolve:t,reject:r}),_e.processingQueue||this.processQueue()}))}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!_e.processingQueue){_e.processingQueue=!0;try{for(;_e.requestQueue.length>0;){const e=_e.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{_e.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{let i="";try{i=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{let r="";try{r=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(a.close(),o(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);o(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}_e.processingQueue=!1,_e.requestQueue=[];class Ee extends _e{constructor(e,t){super(e,t)}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=w.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Oe,Pe;let Ae;const Ce=new Uint8Array(16);function Ie(){if(!Ae&&(Ae="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ae))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ae(Ce)}const $e=[];for(let e=0;e<256;++e)$e.push((e+256).toString(16).slice(1));var ze={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qe(e,t,r){if(ze.randomUUID&&!t&&!e)return ze.randomUUID();const i=(e=e||{}).random||(e.rng||Ie)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return $e[e[t+0]]+$e[e[t+1]]+$e[e[t+2]]+$e[e[t+3]]+"-"+$e[e[t+4]]+$e[e[t+5]]+"-"+$e[e[t+6]]+$e[e[t+7]]+"-"+$e[e[t+8]]+$e[e[t+9]]+"-"+$e[e[t+10]]+$e[e[t+11]]+$e[e[t+12]]+$e[e[t+13]]+$e[e[t+14]]+$e[e[t+15]]}(i)}const Le=new k;class je{static encrypt(e,t){let r="";for(let i=0;i"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,w={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class F{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${x}&redirect_uri=${e}`}}const L=i(o.pipeline);class D extends Q{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield L(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class j{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s(0);return a.ftp.verbose=!0,yield a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),this.client=a,a}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class U{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${I}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const B=209715200;class W extends U{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();for(o=this.baseFolder+"/"+o;o.startsWith("/");)o=o.substring(1);const a=r.join(this.storagePath,i),d=yield this.getFileSize(a),l=o.split(".").pop(),c=(b(l||""),`${this.baseUrl}:/${o}:/createUploadSession`),h=(yield e.post(c,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(a,"r");let u=0,p=Buffer.alloc(B);for(;uthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();for(i=this.baseFolder+"/"+i;i.startsWith("/");)i=i.substring(1);const n=`${this.baseUrl}:/${i}:/content`;let a=(yield fetch(n,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(a){const i=yield e.get(a,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class M{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${$}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class N extends M{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class K{constructor(e){this.config=e,this.taskQueue=new F(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class q extends K{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class J{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new F(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{!1===(yield this.client.exists(r.dirname(this.dir+"/"+o)))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let s=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(s),new Promise(((n,a)=>{s.on("finish",(()=>{n(!0)})),s.on("error",(s=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",s);try{let s=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,s,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});n(!0)}catch(e){console.error("Error occurred during file upload:",e),n(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class H{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${R}&redirect_uri=${e}&force_confirm=true`}}const V=i(o.pipeline);class X extends H{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();for(o=this.baseFolder+"/"+o;o.startsWith("/");)o=o.substring(1);const n=o.substring(0,o.lastIndexOf("/"));if(n){if(!(yield this.ensureDirectoryExists(n)))return console.error("Failed to create directory:",n),!1}const a=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${o}`,overwrite:!0}});if(200!==a.status)return console.error("Error getting upload URL:",a),!1;const d=a.data.href,l=t.createReadStream(r.join(this.storagePath,i));return yield e.put(d,l,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){for(this.taskQueue.setDownloadedSize(0),i=this.baseFolder+"/"+i;i.startsWith("/");)i=i.substring(1);try{const s=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${i}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield V(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class Y{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new F(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p;return yield s.connect({host:e,port:o,username:t,password:r}),this.client=s,s}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class G{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class Z{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:A,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class ee extends Z{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class te{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class re extends te{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class ie{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:z,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class oe extends ie{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class se{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new F(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${O}&response_type=code&redirect_uri=${e}`}}class ne extends se{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class ae{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${P}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const de=4194304;class le extends ae{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*de,i=Math.min(de,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class ce{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new F(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const he=i(o.pipeline);class ue extends ce{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield he(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class pe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new F(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:E,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${C}&response_type=code&redirect_uri=${e}`}}class fe extends pe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ye=["book","config","cover","font"];class ge{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new D(t,r,i):"microsoft"===e?new W(t,r,i):"google"===e?new N(t,r,i):"microsoft_exp"===e?new W(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new N(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new q(t,r):"webdav"===e?new J(t,r):"docker"===e?new ue(t,r):"ftp"===e?new j(t,r):"sftp"===e?new Y(t,r):"boxnet"===e?new ee(t,r,i):"mega"===e?new re(t,r):"adrive"===e?new oe(t,r,i):"pcloud"===e?new ne(t,r,i):"dubox"===e?new le(t,r,i):"yandex"===e?new X(t,r,i):"yiyiwu"===e?new fe(t,r,i):new G}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ye){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const me={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ke={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},ve={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function Te(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const be={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var we={sqlStatement:{createTableStatement:Te({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:Te({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:Te({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:Te({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:Te({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:Te({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:Te({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:Te(me),getByBookKeyStatement:Te(ke),getByBookKeysStatement:Te({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:Te(ve)},jsonToSqlite:Te({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:Te(be)};const Fe=S,Se=_;class _e{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Se:Fe,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=(new Date).getTime()+31536e9}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return _e.requestQueue||(_e.requestQueue=[]),new Promise(((t,r)=>{_e.requestQueue.push({config:e,resolve:t,reject:r}),_e.processingQueue||this.processQueue()}))}))}isTokenValid(){return T(this,void 0,void 0,(function*(){if(!this.accessToken||!this.expiresAt){this.accessToken=yield this.TokenService.getToken("access_token");const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return null!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!_e.processingQueue){_e.processingQueue=!0;try{for(;_e.requestQueue.length>0;){const e=_e.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{_e.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let i=(yield this.TokenService.getToken("access_token"))||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):t(r.data)})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{let r=yield this.isTokenValid();console.log(r,this.expiresAt,(new Date).getTime()),r||(yield this.refreshUserToken());let i=(yield this.TokenService.getToken("access_token"))||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((r,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const i=JSON.parse(e.data);i.done?(a.close(),r(i)):t(i.data)})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);r(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}_e.processingQueue=!1,_e.requestQueue=[];class Ee extends _e{constructor(e,t){super(e,t)}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=w.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Oe,Ae;let Pe;const Ce=new Uint8Array(16);function Ie(){if(!Pe&&(Pe="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pe))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pe(Ce)}const $e=[];for(let e=0;e<256;++e)$e.push((e+256).toString(16).slice(1));var ze={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qe(e,t,r){if(ze.randomUUID&&!t&&!e)return ze.randomUUID();const i=(e=e||{}).random||(e.rng||Ie)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return $e[e[t+0]]+$e[e[t+1]]+$e[e[t+2]]+$e[e[t+3]]+"-"+$e[e[t+4]]+$e[e[t+5]]+"-"+$e[e[t+6]]+$e[e[t+7]]+"-"+$e[e[t+8]]+$e[e[t+9]]+"-"+$e[e[t+10]]+$e[e[t+11]]+$e[e[t+12]]+$e[e[t+13]]+$e[e[t+14]]+$e[e[t+15]]}(i)}const Le=new k;class De{static encrypt(e,t){let r="";for(let i=0;i