/* 脚本引用 https://raw.githubusercontent.com/DualSubs/Universal/main/js/Composite.Subtitles.response.js */ console.log("🍿️ DualSubs: 🎦 Universal Composite.Subtitles Response");const e=function(){if("undefined"!=typeof $environment&&$environment["surge-version"])return"Surge";if("undefined"!=typeof $environment&&$environment["stash-version"])return"Stash";if("undefined"!=typeof module&&module.exports)return"Node.js";if("undefined"!=typeof $task)return"Quantumult X";if("undefined"!=typeof $loon)return"Loon";if("undefined"!=typeof $rocket)return"Shadowrocket";if("undefined"!=typeof Egern)return"Egern"}();class a{static name="Lodash";static version="1.2.2";static about(){return console.log(`\n🟧 ${this.name} v${this.version}\n`)}static get(e={},a="",t=void 0){Array.isArray(a)||(a=this.toPath(a));const s=a.reduce(((e,a)=>Object(e)[a]),e);return void 0===s?t:s}static set(e={},a="",t){return Array.isArray(a)||(a=this.toPath(a)),a.slice(0,-1).reduce(((e,t,s)=>Object(e[t])===e[t]?e[t]:e[t]=/^\d+$/.test(a[s+1])?[]:{}),e)[a[a.length-1]]=t,e}static unset(e={},a=""){return Array.isArray(a)||(a=this.toPath(a)),a.reduce(((e,t,s)=>s===a.length-1?(delete e[t],!0):Object(e)[t]),e)}static toPath(e){return e.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean)}static escape(e){const a={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,(e=>a[e]))}static unescape(e){const a={"&":"&","<":"<",">":">",""":'"',"'":"'"};return e.replace(/&|<|>|"|'/g,(e=>a[e]))}}class t{static name="Storage";static version="1.1.0";static about(){return n("",`🟧 ${this.name} v${this.version}`,"")}static data=null;static dataFile="box.dat";static#e=/^@(?[^.]+)(?:\.(?.*))?$/;static getItem(t=new String,s=null){let n=s;if(!0===t.startsWith("@")){const{key:e,path:s}=t.match(this.#e)?.groups;t=e;let l=this.getItem(t,{});"object"!=typeof l&&(l={}),n=a.get(l,s);try{n=JSON.parse(n)}catch(e){}}else{switch(e){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":n=$persistentStore.read(t);break;case"Quantumult X":n=$prefs.valueForKey(t);break;case"Node.js":this.data=this.#a(this.dataFile),n=this.data?.[t];break;default:n=this.data?.[t]||null}try{n=JSON.parse(n)}catch(e){}}return n??s}static setItem(t=new String,s=new String){let n=!1;if("object"==typeof s)s=JSON.stringify(s);else s=String(s);if(!0===t.startsWith("@")){const{key:e,path:l}=t.match(this.#e)?.groups;t=e;let g=this.getItem(t,{});"object"!=typeof g&&(g={}),a.set(g,l,s),n=this.setItem(t,g)}else switch(e){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":n=$persistentStore.write(s,t);break;case"Quantumult X":n=$prefs.setValueForKey(s,t);break;case"Node.js":this.data=this.#a(this.dataFile),this.data[t]=s,this.#t(this.dataFile),n=!0;break;default:n=this.data?.[t]||null}return n}static removeItem(t){let s=!1;if(!0===t.startsWith("@")){const{key:e,path:n}=t.match(this.#e)?.groups;t=e;let l=this.getItem(t);"object"!=typeof l&&(l={}),keyValue=a.unset(l,n),s=this.setItem(t,l)}else switch(e){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":case"Node.js":default:s=!1;break;case"Quantumult X":s=$prefs.removeValueForKey(t)}return s}static clear(){let a=!1;switch(e){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":case"Node.js":default:a=!1;break;case"Quantumult X":a=$prefs.removeAllValues()}return a}static#a(e){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const a=this.path.resolve(e),t=this.path.resolve(process.cwd(),e),s=this.fs.existsSync(a),n=!s&&this.fs.existsSync(t);if(!s&&!n)return{};{const e=s?a:t;try{return JSON.parse(this.fs.readFileSync(e))}catch(e){return{}}}}}static#t(e=this.dataFile){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const a=this.path.resolve(e),t=this.path.resolve(process.cwd(),e),s=this.fs.existsSync(a),n=!s&&this.fs.existsSync(t),l=JSON.stringify(this.data);s?this.fs.writeFileSync(a,l):n?this.fs.writeFileSync(t,l):this.fs.writeFileSync(a,l)}}}async function s(t={}||"",s={}){switch(t.constructor){case Object:t={...s,...t};break;case String:t={...s,url:t}}t.method||(t.method="GET",(t.body??t.bodyBytes)&&(t.method="POST")),delete t.headers?.Host,delete t.headers?.[":authority"],delete t.headers?.["Content-Length"],delete t.headers?.["content-length"];const n=t.method.toLocaleLowerCase();switch(e){case"Loon":case"Surge":case"Stash":case"Egern":case"Shadowrocket":default:if(t.timeout)switch(t.timeout=parseInt(t.timeout,10),e){case"Loon":case"Shadowrocket":case"Stash":case"Egern":default:t.timeout=t.timeout/1e3;case"Surge":}if(t.policy)switch(e){case"Loon":t.node=t.policy;break;case"Stash":a.set(t,"headers.X-Stash-Selected-Proxy",encodeURI(t.policy));break;case"Shadowrocket":a.set(t,"headers.X-Surge-Proxy",t.policy)}return"boolean"==typeof t.redirection&&(t["auto-redirect"]=t.redirection),t.bodyBytes&&!t.body&&(t.body=t.bodyBytes,delete t.bodyBytes),await new Promise(((e,a)=>{$httpClient[n](t,((s,n,l)=>{s?a(s):(n.ok=/^2\d\d$/.test(n.status),n.statusCode=n.status,l&&(n.body=l,1==t["binary-mode"]&&(n.bodyBytes=l)),e(n))}))}));case"Quantumult X":return t.policy&&a.set(t,"opts.policy",t.policy),"boolean"==typeof t["auto-redirect"]&&a.set(t,"opts.redirection",t["auto-redirect"]),t.body instanceof ArrayBuffer?(t.bodyBytes=t.body,delete t.body):ArrayBuffer.isView(t.body)?(t.bodyBytes=t.body.buffer.slice(t.body.byteOffset,t.body.byteLength+t.body.byteOffset),delete object.body):t.body&&delete t.bodyBytes,await $task.fetch(t).then((e=>(e.ok=/^2\d\d$/.test(e.statusCode),e.status=e.statusCode,e)),(e=>Promise.reject(e.error)));case"Node.js":let s=require("iconv-lite");!function(e){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,e&&(e.headers=e.headers?e.headers:{},void 0===e.headers.Cookie&&void 0===e.cookieJar&&(e.cookieJar=this.ckjar))}(t);const{url:l,...g}=t;return await this.got[n](l,g).on("redirect",((e,a)=>{try{if(e.headers["set-cookie"]){const t=e.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();t&&this.ckjar.setCookieSync(t,null),a.cookieJar=this.ckjar}}catch(e){this.logErr(e)}})).then((e=>(e.statusCode=e.status,e.body=s.decode(e.rawBody,"utf-8"),e.bodyBytes=e.rawBody,e)),(e=>Promise.reject(e.message)))}}const n=(...e)=>console.log(e.join("\n"));class l{static name="XML";static version="0.4.2";static about=()=>console.log(`\n🟧 ${this.name} v${this.version}\n`);static#s="@";static#n="#";static#l={"&":"&","<":"<",">":">","'":"'",""":'"'};static#g={"&":"&","<":"<",">":">","'":"'",'"':"""};static parse(e=new String,a=""){const t=this.#l,s=this.#s,n=this.#n;let l=function e(a,t){let l;switch(typeof a){case"string":case"undefined":l=a;break;case"object":const r=a.raw,u=a.name,m=a.tag,c=a.children;l=r||(m?function(e,a){if(!e)return;const t=e.split(/([^\s='"]+(?:\s*=\s*(?:'[\S\s]*?'|"[\S\s]*?"|[^\s'"]*))?)/),n=t.length;let l,g;for(let e=0;e{"string"==typeof a?o(l,n,e(a,t),void 0):a.tag||a.children||a.raw?o(l,a.name,e(a,t),void 0):o(l,a.name,e(a,t),c?.[s-1]?.name)})),c&&0===c.length&&o(l,n,null,void 0),t&&(l=t(u||"",l))}return l;function o(e,a,t,s=a){if(void 0!==t){const n=e[s];Array.isArray(n)?n.push(t):n?e[s]=[n,t]:e[a]=t}}}(function(e){const a=e.replace(/^[ \t]+/gm,"").split(/<([^!<>?](?:'[\S\s]*?'|"[\S\s]*?"|[^'"<>])*|!(?:--[\S\s]*?--|\[[^\[\]'"<>]+\[[\S\s]*?]]|DOCTYPE[^\[<>]*?\[[\S\s]*?]|(?:ENTITY[^"<>]*?"[\S\s]*?")?[\S\s]*?)|\?[\S\s]*?\?)>/),t=a.length,s={children:[]};let n=s;const l=[];for(let e=0;e.+)\]\]/)?.groups?.raw):/!--(.+)--/.test(e)?(g.name="!--",g.raw=e.match(/!--(?.+)--/)?.groups?.raw):(g.name=t,g.raw=a.join(" ")),r(g);break;default:if(g=function(e){const a={children:[]};e=e.replace(/\s*\/?$/,"");const t=e.search(/[\s='"\/]/);t<0?a.name=e:(a.name=e.substr(0,t),a.tag=e.substr(t));return a}(e),r(g),"/"===(a?.[s-1]??t).slice(-1))delete g.children;else if("link"===t)delete g.children;else l.push(n),n=g}}function o(e){(e=function(e){return e?.replace?.(/^(\r\n|\r|\n|\t)+|(\r\n|\r|\n|\t)+$/g,"")}(e))&&r(i(e))}function r(e){n.children.push(e)}}(e),a);return l;function g(e,a){let t;switch(typeof e){case"string":case"undefined":t=e;break;case"object":const s=e.name,n=e.children;switch(t={},s){case"plist":let e=g(n[0],a);t=Object.assign(t,e);break;case"dict":let l=n.map((e=>g(e,a)));l=function(e,a){var t=0,s=[];for(;tg(e,a)));break;case"key":t=n[0];break;case"true":case"false":const i=s;t=JSON.parse(i);break;case"integer":const o=n[0];t=BigInt(o);break;case"real":const r=n[0];t=parseFloat(r);break;case"string":t=n[0]}a&&(t=a(s||"",t))}return t}function i(e){return e.replace(/(&(?:lt|gt|amp|apos|quot|#(?:\d{1,6}|x[0-9a-fA-F]{1,5}));)/g,(function(e){if("#"===e[1]){const a="x"===e[2]?parseInt(e.substr(3),16):parseInt(e.substr(2),10);if(a>-1)return String.fromCharCode(a)}return t[e]||e}))}}static stringify(e=new Object,a=""){this.#g;const t=this.#s,s=this.#n;let n="";for(let a in e)n+=l(e[a],a,"");return n=a?n.replace(/\t/g,a):n.replace(/\t|\n/g,""),n;function l(e,a,n){let i="";switch(typeof e){case"object":if(Array.isArray(e))i=e.reduce(((e,t)=>e+`${n}${l(t,a,`${n}\t`)}\n`),"");else{let o="",r=!1;for(let s in e)s[0]===t?(o+=` ${s.substring(1)}="${e[s].toString()}"`,delete e[s]):void 0===e[s]?a=s:r=!0;if(i+=`${n}<${a}${o}${r||"link"===a?"":"/"}>`,r){if("plist"===a)i+=g(e,a,`${n}\t`);else for(let a in e)if(a===s)i+=e[a]??"";else i+=l(e[a],a,`${n}\t`);i+=("\n"===i.slice(-1)?n:"")+``}}break;case"string":switch(a){case"?xml":i+=`${n}<${a} ${e.toString()}>`;break;case"?":i+=`${n}<${a}${e.toString()}${a}>`;break;case"!--":i+=`${n}\x3c!--${e.toString()}--\x3e`;break;case"!DOCTYPE":i+=`${n}<${a} ${e.toString()}>`;break;case"!CDATA":i+=`${n}`;break;case s:i+=e;break;default:i+=`${n}<${a}>${e.toString()}`}break;case"undefined":i+=n+`<${a.toString()}/>`}return i}function g(e,a,t){let s="";switch(typeof e){case"boolean":s=`${t}<${e.toString()}/>`;break;case"number":s=`${t}${e.toString()}`;break;case"bigint":s=`${t}${e.toString()}`;break;case"string":s=`${t}${e.toString()}`;break;case"object":let i="";if(Array.isArray(e)){for(var n=0,l=e.length;n${i}${t}`}else{let a="";Object.entries(e).forEach((([e,s])=>{a+=`${t}${e}`,a+=g(s,e,t)})),s=`${t}${a}${t}`}}return s}}}class g{static name="WebVTT";static version="2.2.0";static about=()=>console.log(`\n🟧 ${this.name} v${this.version}\n`);static parse(e=new String,a={milliseconds:!0,timeStamp:!0,line:"single",lineBreak:"\n"}){const t=a.milliseconds?/^((?\d+)(\r\n|\r|\n))?(?(?[0-9:.,]+) --> (?[0-9:.,]+)) ?(?.+)?[^](?[\s\S]*)?$/:/^((?\d+)(\r\n|\r|\n))?(?(?[0-9:]+)[0-9.,]+ --> (?[0-9:]+)[0-9.,]+) ?(?.+)?[^](?[\s\S]*)?$/,s=e.split(/\r\n\r\n|\r\r|\n\n/),n={headers:{},comments:[],style:"",body:[]};return s.forEach((e=>{switch((e=e.trim()).substring(0,5).trim()){case"WEBVT":{let a=e.split(/\r\n|\r|\n/);n.headers.type=a.shift(),n.headers.options=a;break}case"NOTE":n.comments.push(e);break;case"STYLE":{let t=e.split(/\r\n|\r|\n/);t.shift(),n.style=t.join(a.lineBreak);break}default:let s=e.match(t)?.groups;if(s){if("WEBVTT"!==n.headers?.type&&(s.timing=s?.timing?.replace?.(",","."),s.startTime=s?.startTime?.replace?.(",","."),s.endTime=s?.endTime?.replace?.(",",".")),a.timeStamp){let e=s?.startTime?.replace?.(/(.*)/,"1970-01-01T$1Z");s.timeStamp=a.milliseconds?Date.parse(e):Date.parse(e)/1e3}switch(s.text=s?.text?.trimEnd?.(),a.line){case"single":s.text=s?.text?.replace?.(/\r\n|\r|\n/," ");break;case"multi":s.text=s?.text?.split?.(/\r\n|\r|\n/)}n.body.push(s)}}})),n}static stringify(e={headers:{},comments:[],style:"",body:[]},a={milliseconds:!0,timeStamp:!0,line:"single",lineBreak:"\n"}){return[e.headers=[e.headers?.type||"",e.headers?.options||""].flat(1/0).join(a.lineBreak),e.comments=e?.comments?.join?.(a.lineBreak),e.style=e?.style?.length>0?["STYLE",e.style].join(a.lineBreak):"",e.body=e.body.map((e=>(Array.isArray(e.text)&&(e.text=e.text.join(a.lineBreak)),e=`${e.index?e.index+a.lineBreak:""}${e.timing} ${e?.settings??""}${a.lineBreak}${e.text}`))).join(a.lineBreak+a.lineBreak)].join(a.lineBreak+a.lineBreak).trim()+a.lineBreak+a.lineBreak}}var i={Switch:!0,Type:"Translate",Types:["Official","Translate"],Languages:["EN","ZH"],CacheSize:50},o={breakLine:{"text/xml":" ","application/xml":" ","text/vtt":"\n","application/vtt":"\n","text/json":"\n","application/json":"\n"}},r={Settings:i,Configs:o},u={Switch:!0,Types:["Official","Translate"],Languages:["AUTO","ZH"]},m={Languages:{AUTO:["en","en-US","eng","en-GB","en-UK","en-CA","en-US SDH","ja","ja-JP","jpn","ko","ko-KR","kor","pt","pt-PT","pt-BR","por"],AR:["ar","ar-001"],BG:["bg","bg-BG","bul"],CS:["cs","cs-CZ","ces"],DA:["da","da-DK","dan"],DE:["de","de-DE","deu"],EL:["el","el-GR","ell"],EN:["en","en-US","eng","en-GB","en-UK","en-CA","en-US SDH"],"EN-CA":["en-CA","en","eng"],"EN-GB":["en-UK","en","eng"],"EN-US":["en-US","en","eng"],"EN-US SDH":["en-US SDH","en-US","en","eng"],ES:["es","es-419","es-ES","spa","es-419 SDH"],"ES-419":["es-419","es","spa"],"ES-419 SDH":["es-419 SDH","es-419","es","spa"],"ES-ES":["es-ES","es","spa"],ET:["et","et-EE","est"],FI:["fi","fi-FI","fin"],FR:["fr","fr-CA","fr-FR","fra"],"FR-CA":["fr-CA","fr","fra"],"FR-DR":["fr-FR","fr","fra"],HU:["hu","hu-HU","hun"],ID:["id","id-id"],IT:["it","it-IT","ita"],JA:["ja","ja-JP","jpn"],KO:["ko","ko-KR","kor"],LT:["lt","lt-LT","lit"],LV:["lv","lv-LV","lav"],NL:["nl","nl-NL","nld"],NO:["no","nb-NO","nor"],PL:["pl","pl-PL"],PT:["pt","pt-PT","pt-BR","por"],"PT-PT":["pt-PT","pt","por"],"PT-BR":["pt-BR","pt","por"],RO:["ro","ro-RO","ron"],RU:["ru","ru-RU","rus"],SK:["sk","sk-SK","slk"],SL:["sl","sl-SI","slv"],SV:["sv","sv-SE","swe"],IS:["is","is-IS","isl"],ZH:["zh","cmn","zho","zh-CN","zh-Hans","cmn-Hans","zh-TW","zh-Hant","cmn-Hant","zh-HK","yue-Hant","yue"],"ZH-CN":["zh-CN","zh-Hans","cmn-Hans","zho"],"ZH-HANS":["zh-Hans","cmn-Hans","zh-CN","zho"],"ZH-HK":["zh-HK","yue-Hant","yue","zho"],"ZH-TW":["zh-TW","zh-Hant","cmn-Hant","zho"],"ZH-HANT":["zh-Hant","cmn-Hant","zh-TW","zho"],YUE:["yue","yue-Hant","zh-HK","zho"],"YUE-HK":["yue-Hant","yue","zh-HK","zho"]}},c={Settings:u,Configs:m},d={Switch:!0,Type:"Official",Types:["Translate","External"],Languages:["AUTO","ZH"],AutoCC:!0,ShowOnly:!1},h={Languages:{BG:"bg-BG",CS:"cs",DA:"da-DK",DE:"de",EL:"el",EN:"en","EN-GB":"en-GB","EN-US":"en-US","EN-US SDH":"en-US SDH",ES:"es","ES-419":"es-419","ES-ES":"es-ES",ET:"et-EE",FI:"fi",FR:"fr",HU:"hu-HU",ID:"id",IS:"is-IS",IT:"it",JA:"ja",KO:"ko",LT:"lt-LT",LV:"lv-LV",NL:"nl-NL",NO:"nb-NO",PL:"pl-PL",PT:"pt","PT-PT":"pt-PT","PT-BR":"pt-BR",RO:"ro-RO",RU:"ru-RU",SK:"sk-SK",SL:"sl-SI",SV:"sv-SE",YUE:"yue","YUE-HK":"yue-HK",ZH:"zh","ZH-HANS":"zh-Hans","ZH-HK":"zh-Hant-HK","ZH-HANT":"zh-Hant","ZH-TW":"zh-TW"},translationLanguages:{DESKTOP:[{languageCode:"sq",languageName:{simpleText:"Shqip - 阿尔巴尼亚语"}},{languageCode:"ak",languageName:{simpleText:"Ákán - 阿肯语"}},{languageCode:"ar",languageName:{simpleText:"العربية - 阿拉伯语"}},{languageCode:"am",languageName:{simpleText:"አማርኛ - 阿姆哈拉语"}},{languageCode:"as",languageName:{simpleText:"অসমীয়া - 阿萨姆语"}},{languageCode:"az",languageName:{simpleText:"آذربايجان ديلی - 阿塞拜疆语"}},{languageCode:"ee",languageName:{simpleText:"Èʋegbe - 埃维语"}},{languageCode:"ay",languageName:{simpleText:"Aymar aru - 艾马拉语"}},{languageCode:"ga",languageName:{simpleText:"Gaeilge - 爱尔兰语"}},{languageCode:"et",languageName:{simpleText:"Eesti - 爱沙尼亚语"}},{languageCode:"or",languageName:{simpleText:"ଓଡ଼ିଆ - 奥里亚语"}},{languageCode:"om",languageName:{simpleText:"Afaan Oromoo - 奥罗莫语"}},{languageCode:"eu",languageName:{simpleText:"Euskara - 巴斯克语"}},{languageCode:"be",languageName:{simpleText:"Беларуская - 白俄罗斯语"}},{languageCode:"bg",languageName:{simpleText:"Български - 保加利亚语"}},{languageCode:"nso",languageName:{simpleText:"Sesotho sa Leboa - 北索托语"}},{languageCode:"is",languageName:{simpleText:"Íslenska - 冰岛语"}},{languageCode:"pl",languageName:{simpleText:"Polski - 波兰语"}},{languageCode:"bs",languageName:{simpleText:"Bosanski - 波斯尼亚语"}},{languageCode:"fa",languageName:{simpleText:"فارسی - 波斯语"}},{languageCode:"bho",languageName:{simpleText:"भोजपुरी - 博杰普尔语"}},{languageCode:"ts",languageName:{simpleText:"Xitsonga - 聪加语"}},{languageCode:"tt",languageName:{simpleText:"Татарча - 鞑靼语"}},{languageCode:"da",languageName:{simpleText:"Dansk - 丹麦语"}},{languageCode:"de",languageName:{simpleText:"Deutsch - 德语"}},{languageCode:"dv",languageName:{simpleText:"ދިވެހިބަސް - 迪维希语"}},{languageCode:"ru",languageName:{simpleText:"Русский - 俄语"}},{languageCode:"fr",languageName:{simpleText:"français - 法语"}},{languageCode:"sa",languageName:{simpleText:"संस्कृतम् - 梵语"}},{languageCode:"fil",languageName:{simpleText:"Filipino - 菲律宾语"}},{languageCode:"fi",languageName:{simpleText:"suomi - 芬兰语"}},{languageCode:"km",languageName:{simpleText:"ភាសាខ្មែរ - 高棉语"}},{languageCode:"ka",languageName:{simpleText:"ქართული - 格鲁吉亚语"}},{languageCode:"gu",languageName:{simpleText:"ગુજરાતી - 古吉拉特语"}},{languageCode:"gn",languageName:{simpleText:"Avañe'ẽ - 瓜拉尼语"}},{languageCode:"kk",languageName:{simpleText:"Қазақ тілі - 哈萨克语"}},{languageCode:"ht",languageName:{simpleText:"Kreyòl ayisyen - 海地克里奥尔语"}},{languageCode:"ko",languageName:{simpleText:"한국어 - 韩语"}},{languageCode:"ha",languageName:{simpleText:"هَوُسَ - 豪萨语"}},{languageCode:"nl",languageName:{simpleText:"Nederlands - 荷兰语"}},{languageCode:"gl",languageName:{simpleText:"Galego - 加利西亚语"}},{languageCode:"ca",languageName:{simpleText:"català - 加泰罗尼亚语"}},{languageCode:"cs",languageName:{simpleText:"čeština - 捷克语"}},{languageCode:"kn",languageName:{simpleText:"ಕನ್ನಡ - 卡纳达语"}},{languageCode:"ky",languageName:{simpleText:"кыргыз тили - 吉尔吉斯语"}},{languageCode:"xh",languageName:{simpleText:"isiXhosa - 科萨语"}},{languageCode:"co",languageName:{simpleText:"corsu - 科西嘉语"}},{languageCode:"hr",languageName:{simpleText:"hrvatski - 克罗地亚语"}},{languageCode:"qu",languageName:{simpleText:"Runa Simi - 克丘亚语"}},{languageCode:"ku",languageName:{simpleText:"Kurdî - 库尔德语"}},{languageCode:"la",languageName:{simpleText:"lingua latīna - 拉丁语"}},{languageCode:"lv",languageName:{simpleText:"latviešu valoda - 拉脱维亚语"}},{languageCode:"lo",languageName:{simpleText:"ພາສາລາວ - 老挝语"}},{languageCode:"lt",languageName:{simpleText:"lietuvių kalba - 立陶宛语"}},{languageCode:"ln",languageName:{simpleText:"lingála - 林加拉语"}},{languageCode:"lg",languageName:{simpleText:"Luganda - 卢干达语"}},{languageCode:"lb",languageName:{simpleText:"Lëtzebuergesch - 卢森堡语"}},{languageCode:"rw",languageName:{simpleText:"Kinyarwanda - 卢旺达语"}},{languageCode:"ro",languageName:{simpleText:"Română - 罗马尼亚语"}},{languageCode:"mt",languageName:{simpleText:"Malti - 马耳他语"}},{languageCode:"mr",languageName:{simpleText:"मराठी - 马拉地语"}},{languageCode:"mg",languageName:{simpleText:"Malagasy - 马拉加斯语"}},{languageCode:"ml",languageName:{simpleText:"മലയാളം - 马拉雅拉姆语"}},{languageCode:"ms",languageName:{simpleText:"bahasa Melayu - 马来语"}},{languageCode:"mk",languageName:{simpleText:"македонски јазик - 马其顿语"}},{languageCode:"mi",languageName:{simpleText:"te reo Māori - 毛利语"}},{languageCode:"mn",languageName:{simpleText:"Монгол хэл - 蒙古语"}},{languageCode:"bn",languageName:{simpleText:"বাংলা - 孟加拉语"}},{languageCode:"my",languageName:{simpleText:"ဗမာစာ - 缅甸语"}},{languageCode:"hmn",languageName:{simpleText:"Hmoob - 苗语"}},{languageCode:"af",languageName:{simpleText:"Afrikaans - 南非荷兰语"}},{languageCode:"st",languageName:{simpleText:"Sesotho - 南索托语"}},{languageCode:"ne",languageName:{simpleText:"नेपाली - 尼泊尔语"}},{languageCode:"no",languageName:{simpleText:"Norsk - 挪威语"}},{languageCode:"pa",languageName:{simpleText:"ਪੰਜਾਬੀ - 旁遮普语"}},{languageCode:"pt",languageName:{simpleText:"Português - 葡萄牙语"}},{languageCode:"ps",languageName:{simpleText:"پښتو - 普什图语"}},{languageCode:"ny",languageName:{simpleText:"chiCheŵa - 齐切瓦语"}},{languageCode:"ja",languageName:{simpleText:"日本語 - 日语"}},{languageCode:"sv",languageName:{simpleText:"Svenska - 瑞典语"}},{languageCode:"sm",languageName:{simpleText:"Gagana fa'a Samoa - 萨摩亚语"}},{languageCode:"sr",languageName:{simpleText:"Српски језик - 塞尔维亚语"}},{languageCode:"si",languageName:{simpleText:"සිංහල - 僧伽罗语"}},{languageCode:"sn",languageName:{simpleText:"ChiShona - 绍纳语"}},{languageCode:"eo",languageName:{simpleText:"Esperanto - 世界语"}},{languageCode:"sk",languageName:{simpleText:"slovenčina - 斯洛伐克语"}},{languageCode:"sl",languageName:{simpleText:"slovenščina - 斯洛文尼亚语"}},{languageCode:"sw",languageName:{simpleText:"Kiswahili - 斯瓦希里语"}},{languageCode:"gd",languageName:{simpleText:"Gàidhlig - 苏格兰盖尔语"}},{languageCode:"ceb",languageName:{simpleText:"Binisaya - 宿务语"}},{languageCode:"so",languageName:{simpleText:"Soomaaliga - 索马里语"}},{languageCode:"tg",languageName:{simpleText:"тоҷикӣ - 塔吉克语"}},{languageCode:"te",languageName:{simpleText:"తెలుగు - 泰卢固语"}},{languageCode:"ta",languageName:{simpleText:"தமிழ் - 泰米尔语"}},{languageCode:"th",languageName:{simpleText:"ไทย - 泰语"}},{languageCode:"ti",languageName:{simpleText:"ትግርኛ - 提格利尼亚语"}},{languageCode:"tr",languageName:{simpleText:"Türkçe - 土耳其语"}},{languageCode:"tk",languageName:{simpleText:"Türkmen - 土库曼语"}},{languageCode:"cy",languageName:{simpleText:"Cymraeg - 威尔士语"}},{languageCode:"ug",languageName:{simpleText:"ئۇيغۇرچە - 维吾尔语"}},{languageCode:"und",languageName:{simpleText:"Unknown - 未知语言"}},{languageCode:"ur",languageName:{simpleText:"اردو - 乌尔都语"}},{languageCode:"uk",languageName:{simpleText:"українська - 乌克兰语"}},{languageCode:"uz",languageName:{simpleText:"O'zbek - 乌兹别克语"}},{languageCode:"es",languageName:{simpleText:"Español - 西班牙语"}},{languageCode:"fy",languageName:{simpleText:"Frysk - 西弗里西亚语"}},{languageCode:"iw",languageName:{simpleText:"עברית - 希伯来语"}},{languageCode:"el",languageName:{simpleText:"Ελληνικά - 希腊语"}},{languageCode:"haw",languageName:{simpleText:"ʻŌlelo Hawaiʻi - 夏威夷语"}},{languageCode:"sd",languageName:{simpleText:"سنڌي - 信德语"}},{languageCode:"hu",languageName:{simpleText:"magyar - 匈牙利语"}},{languageCode:"su",languageName:{simpleText:"Basa Sunda - 巽他语"}},{languageCode:"hy",languageName:{simpleText:"հայերեն - 亚美尼亚语"}},{languageCode:"ig",languageName:{simpleText:"Igbo - 伊博语"}},{languageCode:"it",languageName:{simpleText:"Italiano - 意大利语"}},{languageCode:"yi",languageName:{simpleText:"ייִדיש - 意第绪语"}},{languageCode:"hi",languageName:{simpleText:"हिन्दी - 印地语"}},{languageCode:"id",languageName:{simpleText:"Bahasa Indonesia - 印度尼西亚语"}},{languageCode:"en",languageName:{simpleText:"English - 英语"}},{languageCode:"yo",languageName:{simpleText:"Yorùbá - 约鲁巴语"}},{languageCode:"vi",languageName:{simpleText:"Tiếng Việt - 越南语"}},{languageCode:"jv",languageName:{simpleText:"Basa Jawa - 爪哇语"}},{languageCode:"zh-Hant",languageName:{simpleText:"中文(繁體)- 中文(繁体)"}},{languageCode:"zh-Hans",languageName:{simpleText:"中文(简体)"}},{languageCode:"zu",languageName:{simpleText:"isiZulu - 祖鲁语"}},{languageCode:"kri",languageName:{simpleText:"Krìì - 克里语"}}],MOBILE:[{languageCode:"sq",languageName:{runs:[{text:"Shqip - 阿尔巴尼亚语"}]}},{languageCode:"ak",languageName:{runs:[{text:"Ákán - 阿肯语"}]}},{languageCode:"ar",languageName:{runs:[{text:"العربية - 阿拉伯语"}]}},{languageCode:"am",languageName:{runs:[{text:"አማርኛ - 阿姆哈拉语"}]}},{languageCode:"as",languageName:{runs:[{text:"অসমীয়া - 阿萨姆语"}]}},{languageCode:"az",languageName:{runs:[{text:"Azərbaycanca - 阿塞拜疆语"}]}},{languageCode:"ee",languageName:{runs:[{text:"Eʋegbe - 埃维语"}]}},{languageCode:"ay",languageName:{runs:[{text:"Aymar - 艾马拉语"}]}},{languageCode:"ga",languageName:{runs:[{text:"Gaeilge - 爱尔兰语"}]}},{languageCode:"et",languageName:{runs:[{text:"Eesti - 爱沙尼亚语"}]}},{languageCode:"or",languageName:{runs:[{text:"ଓଡ଼ିଆ - 奥里亚语"}]}},{languageCode:"om",languageName:{runs:[{text:"Oromoo - 奥罗莫语"}]}},{languageCode:"eu",languageName:{runs:[{text:"Euskara - 巴斯克语"}]}},{languageCode:"be",languageName:{runs:[{text:"Беларуская - 白俄罗斯语"}]}},{languageCode:"bg",languageName:{runs:[{text:"Български - 保加利亚语"}]}},{languageCode:"nso",languageName:{runs:[{text:"Sesotho sa Leboa - 北索托语"}]}},{languageCode:"is",languageName:{runs:[{text:"Íslenska - 冰岛语"}]}},{languageCode:"pl",languageName:{runs:[{text:"Polski - 波兰语"}]}},{languageCode:"bs",languageName:{runs:[{text:"Bosanski - 波斯尼亚语"}]}},{languageCode:"fa",languageName:{runs:[{text:"فارسی - 波斯语"}]}},{languageCode:"bho",languageName:{runs:[{text:"भोजपुरी - 博杰普尔语"}]}},{languageCode:"ts",languageName:{runs:[{text:"Xitsonga - 聪加语"}]}},{languageCode:"tt",languageName:{runs:[{text:"Татарча - 鞑靼语"}]}},{languageCode:"da",languageName:{runs:[{text:"Dansk - 丹麦语"}]}},{languageCode:"de",languageName:{runs:[{text:"Deutsch - 德语"}]}},{languageCode:"dv",languageName:{runs:[{text:"ދިވެހިބަސް - 迪维希语"}]}},{languageCode:"ru",languageName:{runs:[{text:"Русский - 俄语"}]}},{languageCode:"fr",languageName:{runs:[{text:"Français - 法语"}]}},{languageCode:"sa",languageName:{runs:[{text:"संस्कृतम् - 梵语"}]}},{languageCode:"fil",languageName:{runs:[{text:"Filipino - 菲律宾语"}]}},{languageCode:"fi",languageName:{runs:[{text:"Suomi - 芬兰语"}]}},{languageCode:"km",languageName:{runs:[{text:"ភាសាខ្មែរ - 高棉语"}]}},{languageCode:"ka",languageName:{runs:[{text:"ქართული - 格鲁吉亚语"}]}},{languageCode:"gu",languageName:{runs:[{text:"ગુજરાતી - 古吉拉特语"}]}},{languageCode:"gn",languageName:{runs:[{text:"Avañe'ẽ - 瓜拉尼语"}]}},{languageCode:"kk",languageName:{runs:[{text:"Қазақ тілі - 哈萨克语"}]}},{languageCode:"ht",languageName:{runs:[{text:"海地克里奥尔语"}]}},{languageCode:"ko",languageName:{runs:[{text:"한국말 - 韩语"}]}},{languageCode:"ha",languageName:{runs:[{text:"هَوُسَ - 豪萨语"}]}},{languageCode:"nl",languageName:{runs:[{text:"Nederlands - 荷兰语"}]}},{languageCode:"gl",languageName:{runs:[{text:"Galego - 加利西亚语"}]}},{languageCode:"ca",languageName:{runs:[{text:"Català - 加泰罗尼亚语"}]}},{languageCode:"cs",languageName:{runs:[{text:"Čeština - 捷克语"}]}},{languageCode:"kn",languageName:{runs:[{text:"ಕನ್ನಡ - 卡纳达语"}]}},{languageCode:"ky",languageName:{runs:[{text:"Кыргызча - 吉尔吉斯语"}]}},{languageCode:"xh",languageName:{runs:[{text:"isiXhosa - 科萨语"}]}},{languageCode:"co",languageName:{runs:[{text:"Corsu - 科西嘉语"}]}},{languageCode:"hr",languageName:{runs:[{text:"Hrvatski - 克罗地亚语"}]}},{languageCode:"qu",languageName:{runs:[{text:"Runa Simi - 克丘亚语"}]}},{languageCode:"ku",languageName:{runs:[{text:"Kurdî - 库尔德语"}]}},{languageCode:"la",languageName:{runs:[{text:"lingua latīna - 拉丁语"}]}},{languageCode:"lv",languageName:{runs:[{text:"Latviešu - 拉脱维亚语"}]}},{languageCode:"lo",languageName:{runs:[{text:"ລາວ - 老挝语"}]}},{languageCode:"lt",languageName:{runs:[{text:"Lietuvių - 立陶宛语"}]}},{languageCode:"ln",languageName:{runs:[{text:"Lingála - 林加拉语"}]}},{languageCode:"lg",languageName:{runs:[{text:"Luganda - 卢干达语"}]}},{languageCode:"lb",languageName:{runs:[{text:"Lëtzebuergesch - 卢森堡语"}]}},{languageCode:"rw",languageName:{runs:[{text:"Kinyarwanda - 卢旺达语"}]}},{languageCode:"ro",languageName:{runs:[{text:"Română - 罗马尼亚语"}]}},{languageCode:"mt",languageName:{runs:[{text:"Malti - 马耳他语"}]}},{languageCode:"mr",languageName:{runs:[{text:"मराठी - 马拉地语"}]}},{languageCode:"mg",languageName:{runs:[{text:"Malagasy - 马拉加斯语"}]}},{languageCode:"ml",languageName:{runs:[{text:"മലയാളം - 马拉雅拉姆语"}]}},{languageCode:"ms",languageName:{runs:[{text:"Bahasa Melayu - 马来语"}]}},{languageCode:"mk",languageName:{runs:[{text:"македонски - 马其顿语"}]}},{languageCode:"mi",languageName:{runs:[{text:"Māori - 毛利语"}]}},{languageCode:"mn",languageName:{runs:[{text:"Монгол - 蒙古语"}]}},{languageCode:"bn",languageName:{runs:[{text:"বাংলা - 孟加拉语"}]}},{languageCode:"my",languageName:{runs:[{text:"ဗမာစာ - 缅甸语"}]}},{languageCode:"hmn",languageName:{runs:[{text:"Hmoob - 苗语"}]}},{languageCode:"af",languageName:{runs:[{text:"Afrikaans - 南非荷兰语"}]}},{languageCode:"st",languageName:{runs:[{text:"Sesotho - 南索托语"}]}},{languageCode:"ne",languageName:{runs:[{text:"नेपाली - 尼泊尔语"}]}},{languageCode:"no",languageName:{runs:[{text:"Norsk - 挪威语"}]}},{languageCode:"pa",languageName:{runs:[{text:"ਪੰਜਾਬੀ - 旁遮普语"}]}},{languageCode:"pt",languageName:{runs:[{text:"Português - 葡萄牙语"}]}},{languageCode:"ps",languageName:{runs:[{text:"پښتو - 普什图语"}]}},{languageCode:"ny",languageName:{runs:[{text:"chiCheŵa - 齐切瓦语"}]}},{languageCode:"ja",languageName:{runs:[{text:"日本語 - 日语"}]}},{languageCode:"sv",languageName:{runs:[{text:"Svenska - 瑞典语"}]}},{languageCode:"sm",languageName:{runs:[{text:"Gagana Samoa - 萨摩亚语"}]}},{languageCode:"sr",languageName:{runs:[{text:"Српски језик - 塞尔维亚语"}]}},{languageCode:"si",languageName:{runs:[{text:"සිංහල - 僧伽罗语"}]}},{languageCode:"sn",languageName:{runs:[{text:"ChiShona - 绍纳语"}]}},{languageCode:"eo",languageName:{runs:[{text:"Esperanto - 世界语"}]}},{languageCode:"sk",languageName:{runs:[{text:"Slovenčina - 斯洛伐克语"}]}},{languageCode:"sl",languageName:{runs:[{text:"Slovenščina - 斯洛文尼亚语"}]}},{languageCode:"sw",languageName:{runs:[{text:"Kiswahili - 斯瓦希里语"}]}},{languageCode:"gd",languageName:{runs:[{text:"Gàidhlig - 苏格兰盖尔语"}]}},{languageCode:"ceb",languageName:{runs:[{text:"Cebuano - 宿务语"}]}},{languageCode:"so",languageName:{runs:[{text:"Soomaaliga - 索马里语"}]}},{languageCode:"tg",languageName:{runs:[{text:"тоҷикӣ - 塔吉克语"}]}},{languageCode:"te",languageName:{runs:[{text:"తెలుగు - 泰卢固语"}]}},{languageCode:"ta",languageName:{runs:[{text:"தமிழ் - 泰米尔语"}]}},{languageCode:"th",languageName:{runs:[{text:"ไทย - 泰语"}]}},{languageCode:"ti",languageName:{runs:[{text:"ትግርኛ - 提格利尼亚语"}]}},{languageCode:"tr",languageName:{runs:[{text:"Türkçe - 土耳其语"}]}},{languageCode:"tk",languageName:{runs:[{text:"Türkmen - 土库曼语"}]}},{languageCode:"cy",languageName:{runs:[{text:"Cymraeg - 威尔士语"}]}},{languageCode:"ug",languageName:{runs:[{text:"ئۇيغۇرچە - 维吾尔语"}]}},{languageCode:"und",languageName:{runs:[{text:"Unknown - 未知语言"}]}},{languageCode:"ur",languageName:{runs:[{text:"اردو - 乌尔都语"}]}},{languageCode:"uk",languageName:{runs:[{text:"Українська - 乌克兰语"}]}},{languageCode:"uz",languageName:{runs:[{text:"O‘zbek - 乌兹别克语"}]}},{languageCode:"es",languageName:{runs:[{text:"Español - 西班牙语"}]}},{languageCode:"fy",languageName:{runs:[{text:"Frysk - 西弗里西亚语"}]}},{languageCode:"iw",languageName:{runs:[{text:"עברית - 希伯来语"}]}},{languageCode:"el",languageName:{runs:[{text:"Ελληνικά - 希腊语"}]}},{languageCode:"haw",languageName:{runs:[{text:"ʻŌlelo Hawaiʻi - 夏威夷语"}]}},{languageCode:"sd",languageName:{runs:[{text:"سنڌي - 信德语"}]}},{languageCode:"hu",languageName:{runs:[{text:"Magyar - 匈牙利语"}]}},{languageCode:"su",languageName:{runs:[{text:"Basa Sunda - 巽他语"}]}},{languageCode:"hy",languageName:{runs:[{text:"Հայերեն - 亚美尼亚语"}]}},{languageCode:"ig",languageName:{runs:[{text:"Igbo - 伊博语"}]}},{languageCode:"it",languageName:{runs:[{text:"Italiano - 意大利语"}]}},{languageCode:"yi",languageName:{runs:[{text:"ייִדיש - 意第绪语"}]}},{languageCode:"hi",languageName:{runs:[{text:"हिन्दी - 印地语"}]}},{languageCode:"id",languageName:{runs:[{text:"Bahasa Indonesia - 印度尼西亚语"}]}},{languageCode:"en",languageName:{runs:[{text:"English - 英语"}]}},{languageCode:"yo",languageName:{runs:[{text:"Yorùbá - 约鲁巴语"}]}},{languageCode:"vi",languageName:{runs:[{text:"Tiếng Việt - 越南语"}]}},{languageCode:"jv",languageName:{runs:[{text:"Basa Jawa - 爪哇语"}]}},{languageCode:"zh-Hant",languageName:{runs:[{text:"中文(繁體) - 中文(繁体)"}]}},{languageCode:"zh-Hans",languageName:{runs:[{text:"中文(简体)"}]}},{languageCode:"zu",languageName:{runs:[{text:"isiZulu - 祖鲁语"}]}},{languageCode:"kri",languageName:{runs:[{text:"Krìì - 克里语"}]}}]}},p={Settings:d,Configs:h},f={Switch:!0,Type:"Translate",Languages:["AUTO","ZH"]},x={Languages:{AR:"ar",CS:"cs",DA:"da",DE:"de",EN:"en","EN-GB":"en-GB","EN-US":"en-US","EN-US SDH":"en-US SDH",ES:"es","ES-419":"es-419","ES-ES":"es-ES",FI:"fi",FR:"fr",HE:"he",HR:"hr",HU:"hu",ID:"id",IT:"it",JA:"ja",KO:"ko",MS:"ms",NB:"nb",NL:"nl",PL:"pl",PT:"pt","PT-PT":"pt-PT","PT-BR":"pt-BR",RO:"ro",RU:"ru",SV:"sv",TH:"th",TR:"tr",UK:"uk",VI:"vi",IS:"is",ZH:"zh","ZH-HANS":"zh-Hans","ZH-HK":"zh-HK","ZH-HANT":"zh-Hant"}},y={Settings:f,Configs:x},b={Switch:!0,Types:["Translate","External"],Languages:["AUTO","ZH"]},C={Settings:b},N={CacheSize:20,ShowOnly:!1,Position:"Reverse",Offset:0,Tolerance:1e3},S={Settings:N},T={Vendor:"Google",ShowOnly:!1,Position:"Forward",CacheSize:10,Method:"Part",Times:3,Interval:500,Exponential:!0},k={Settings:T},$={SubVendor:"URL",LrcVendor:"NeteaseMusic",CacheSize:50},w={Settings:$},v={GoogleCloud:{Version:"v2",Mode:"Key",Auth:""},Microsoft:{Version:"Azure",Mode:"Token",Region:"",Auth:""},DeepL:{Version:"Free",Auth:""},DeepLX:{Endpoint:"",Auth:""},URL:"",NeteaseMusic:{PhoneNumber:"",Password:""}},P={Settings:v},E=Database={Default:Object.freeze({__proto__:null,Configs:o,Settings:i,default:r}),Universal:Object.freeze({__proto__:null,Configs:m,Settings:u,default:c}),YouTube:Object.freeze({__proto__:null,Configs:h,Settings:d,default:p}),Netflix:Object.freeze({__proto__:null,Configs:x,Settings:f,default:y}),Spotify:Object.freeze({__proto__:null,Settings:b,default:C}),Composite:Object.freeze({__proto__:null,Settings:N,default:S}),Translate:Object.freeze({__proto__:null,Settings:T,default:k}),External:Object.freeze({__proto__:null,Settings:$,default:w}),API:Object.freeze({__proto__:null,Settings:v,default:P})};function A(e,s,l){n("☑️ Set Environment Variables","");let{Settings:g,Caches:i,Configs:o}=function(e,s,n){let l=t.getItem(e,n),g={};switch(typeof $argument){case"string":let e=Object.fromEntries($argument.split("&").map((e=>e.split("=").map((e=>e.replace(/\"/g,""))))));for(let t in e)a.set(g,t,e[t]);break;case"object":for(let e in $argument)a.set(g,e,$argument[e])}const i={Settings:n?.Default?.Settings||{},Configs:n?.Default?.Configs||{},Caches:{}};Array.isArray(s)||(s=[s]);for(let e of s)i.Settings={...i.Settings,...n?.[e]?.Settings,...g,...l?.[e]?.Settings},i.Configs={...i.Configs,...n?.[e]?.Configs},l?.[e]?.Caches&&"string"==typeof l?.[e]?.Caches&&(l[e].Caches=JSON.parse(l?.[e]?.Caches)),i.Caches={...i.Caches,...l?.[e]?.Caches};return function e(a,t){for(var s in a){var n=a[s];a[s]="object"==typeof n&&null!==n?e(n,t):t(s,n)}return a}(i.Settings,((e,a)=>("true"===a||"false"===a?a=JSON.parse(a):"string"==typeof a&&(a=a.includes(",")?a.split(",").map((e=>o(e))):o(a)),a))),i;function o(e){return e&&!isNaN(e)&&(e=parseInt(e,10)),e}}(e,s,l);return Array.isArray(g?.Types)||(g.Types=g.Types?[g.Types]:[]),n(`✅ Set Environment Variables, Settings: ${typeof g}, Settings内容: ${JSON.stringify(g)}`,""),("object"!=typeof i?.Playlists||Array.isArray(i?.Playlists))&&(i.Playlists={}),i.Playlists.Master=new Map(JSON.parse(i?.Playlists?.Master||"[]")),i.Playlists.Subtitle=new Map(JSON.parse(i?.Playlists?.Subtitle||"[]")),"object"!=typeof i?.Subtitles&&(i.Subtitles=new Map(JSON.parse(i?.Subtitles||"[]"))),("object"!=typeof i?.Metadatas||Array.isArray(i?.Metadatas))&&(i.Metadatas={}),"object"!=typeof i?.Metadatas?.Tracks&&(i.Metadatas.Tracks=new Map(JSON.parse(i?.Metadatas?.Tracks||"[]"))),{Settings:g,Caches:i,Configs:o}}class O{constructor(e={}){this.Name="Composite",this.Version="1.0.2",this.Offset=0,this.Tolerance=0,this.Position="Forward",Object.assign(this,e),n(`\n🟧 ${this.Name} v${this.Version}\n`)}JSON(e={},a={},t="captions",s=this.Offset,l=this.Tolerance,g=this.Position){n(`☑️ Composite JSON Subtitles\nOffset:${s}, Tolerance:${l}, Position:${g}`,"");let i=e,o=0,r=0,u=0;const m=e?.events?.length,c=a?.events?.length;for("asr"===t&&(n("☑️ DualSub是自动生成字幕",""),o=1,r=1,u=1,e.events=e.events.map((e=>(e?.segs&&Array.isArray(e?.segs)&&(e.segs=[{utf8:e.segs.map((e=>e.utf8)).join("")}]),delete e.wWinId,e))),a.events=a.events.map((e=>(e?.segs&&Array.isArray(e?.segs)&&(e.segs=[{utf8:e.segs.map((e=>e.utf8)).join("")}]),delete e.wWinId,e))));rt?r++:(t>s||r++,u++)}return n("✅ Composite JSON Subtitles",""),i}timedText(e={},a={},t="captions",s=this.Offset,l=this.Tolerance,g=this.Position){n(`☑️ Composite timedText Subtitles\nOffset:${s}, Tolerance:${l}, Position:${g}`,"");let i=e,o=0,r=0,u=0;const m=e?.timedtext?.body?.p?.length,c=a?.timedtext?.body?.p?.length;for("asr"===t&&(n("☑️ DualSub是自动生成字幕",""),i.timedtext.head.wp[1]["@rc"]="1",e.timedtext.body.p=e.timedtext.body.p.map((e=>(e?.s&&(Array.isArray(e?.s)?e["#"]=e?.s.map((e=>e["#"])).join(""):e["#"]=e.s?.["#"]??"",delete e.s),e))),a.timedtext.body.p=a.timedtext.body.p.map((e=>(e?.s&&(Array.isArray(e?.s)?e["#"]=e?.s.map((e=>e["#"])).join(""):e["#"]=e.s?.["#"]??"",delete e.s),e))));rt?r++:(t>s||r++,u++)}return n("✅ Composite timedText Subtitles",""),i}webVTT(e={},a={},t=this.Offset,s=this.Tolerance,l=this.Position){n(`☑️ Composite webVTT Subtitles\nOffset:${t}, Tolerance:${s}, Position:${l}`,"");let g=e,i=0,o=0,r=0;const u=e?.body?.length,m=a?.body?.length;for(;ot?o++:(t>n||o++,r++)}return n("✅ Composite webVTT Subtitles",""),g}spotifyLyric(e=[],a=[],t=this.Offset,s=this.Tolerance,l=this.Position){n(`☑️ Composite Spotify Lyrics\nOffset:${t}, Tolerance:${s}, Position:${l}`,"");let g=e,i=0,o=0,r=0;const u=e?.length,m=a?.length;for(;on?o++:(n>u||o++,r++)}return n("✅ Composite Spotify Lyrics",""),g}}n("v1.1.0(1004)");const H=new class{constructor(e,a=void 0){return console.log("\n🟧 URL v2.1.2\n"),e=this.#i(e,a),this}#i(e,a=void 0){const t=/(?:(?\w+:)\/\/(?:(?[^\s:"]+)(?::(?[^\s:"]+))?@)?(?[^\s@/]+))?(?\/?[^\s@?]+)?(?\?[^\s?]+)?/,s=/(?.+):(?\d+)$/;if(e=e.match(t)?.groups||{},a&&(!(a=a?.match(t)?.groups||{}).protocol||!a.hostname))throw new Error(`🚨 ${name}, ${a} is not a valid URL`);if((e.protocol||a?.protocol)&&(this.protocol=e.protocol||a.protocol),(e.username||a?.username)&&(this.username=e.username||a.username),(e.password||a?.password)&&(this.password=e.password||a.password),(e.host||a?.host)&&(this.host=e.host||a.host,Object.freeze(this.host),this.hostname=this.host.match(s)?.groups.hostname??this.host,this.port=this.host.match(s)?.groups.port??""),e.pathname||a?.pathname){if(this.pathname=e.pathname||a?.pathname,this.pathname.startsWith("/")||(this.pathname="/"+this.pathname),this.paths=this.pathname.split("/").filter(Boolean),Object.freeze(this.paths),this.paths){const e=this.paths[this.paths.length-1];if(e?.includes(".")){const a=e.split(".");this.format=a[a.length-1],Object.freeze(this.format)}}}else this.pathname="";return(e.search||a?.search)&&(this.search=e.search||a.search,Object.freeze(this.search),this.search&&(this.searchParams=this.search.slice(1).split("&").map((e=>e.split("="))))),this.searchParams=new Map(this.searchParams||[]),this.harf=this.toString(),Object.freeze(this.harf),this}toString(){let e="";return this.protocol&&(e+=this.protocol+"//"),this.username&&(e+=this.username+(this.password?":"+this.password:"")+"@"),this.hostname&&(e+=this.hostname),this.port&&(e+=":"+this.port),this.pathname&&(e+=this.pathname),0!==this.searchParams.size&&(e+="?"+Array.from(this.searchParams).map((e=>e.join("="))).join("&")),e}toJSON(){return JSON.stringify({...this})}}($request.url);n(`⚠ url: ${H.toJSON()}`,"");const L=$request.method,j=H.hostname,U=H.pathname,R=H.pathname.split("/").filter(Boolean);n(`⚠ METHOD: ${L}, HOST: ${j}, PATH: ${U}`,"");let B=($response.headers?.["Content-Type"]??$response.headers?.["content-type"])?.split(";")?.[0];"application/octet-stream"!==B&&"text/plain"!==B||(B=function(e=new URL,a,t=void 0){switch(n(`☑️ detectFormat, format: ${e.format||e.searchParams.get("fmt")||e.searchParams.get("format")}`,""),e.format||e.searchParams.get("fmt")||e.searchParams.get("format")){case"txt":t="text/plain";break;case"xml":case"srv3":case"ttml":case"ttml2":case"imsc":t="text/xml";break;case"vtt":case"webvtt":t="text/vtt";break;case"json":case"json3":t="application/json";break;case"m3u":case"m3u8":t="application/x-mpegurl";break;case"plist":t="application/plist";break;case void 0:const e=a?.substring?.(0,6).trim?.();switch(e){case"{const e=function(e){n("☑️ Detect Platform","");let a=/\.(netflix\.com|nflxvideo\.net)/i.test(e)?"Netflix":/(\.youtube|youtubei\.googleapis)\.com/i.test(e)?"YouTube":/\.spotify(cdn)?\.com/i.test(e)?"Spotify":/\.apple\.com/i.test(e)?"Apple":/\.(dssott|starott)\.com/i.test(e)?"Disney+":/primevideo\.com|(\.(pv-cdn|aiv-cdn|akamaihd|cloudfront)\.net)|s3\.amazonaws\.com\/aiv-prod-timedtext\//i.test(e)?"PrimeVideo":/prd\.media\.h264\.io/i.test(e)?"Max":/\.(api\.hbo|hbomaxcdn)\.com/i.test(e)?"HBOMax":/\.hulu(stream|im)?\.com/i.test(e)?"Hulu":/\.(pplus\.paramount\.tech|cbs(aavideo|cbsivideo)?\.com)/i.test(e)?"Paramount+":/\.uplynk\.com/i.test(e)?"Discovery+":/dplus-ph-/i.test(e)?"Discovery+Ph":/\.peacocktv\.com/i.test(e)?"PeacockTV":/\.fubo\.tv/i.test(e)?"FuboTV":/\.viki\.io/i.test(e)?"Viki":/epix(hls\.akamaized\.net|\.services\.io)/i.test(e)?"MGM+":/\.nebula\.app/i.test(e)?"Nebula":/\.pluto(\.tv|tv\.net)/i.test(e)?"PlutoTV":/\.mubicdn\.net/i.test(e)?"MUBI":"Universal";return n(`✅ Detect Platform, Platform: ${a}`,""),a}($request.url);n(`⚠ PLATFORM: ${e}`,"");const{Settings:a,Caches:t,Configs:i}=A("DualSubs",[["YouTube","Netflix","BiliBili","Spotify"].includes(e)?e:"Universal","Composite","API"],E);switch(n(`⚠ Settings.Switch: ${a?.Switch}`,""),a.Switch){case!0:default:const i=H.searchParams?.get("subtype")??a.Type,o=[H.searchParams?.get("lang")?.toUpperCase?.()??a.Languages[0],(H.searchParams?.get("tlang")??t?.tlang)?.toUpperCase?.()??a.Languages[1]];n(`⚠ Type: ${i}, Languages: ${o}`,"");let r=[];switch(i){case"Official":switch(n("⚠ 官方字幕",""),e){default:const{subtitlesPlaylistURL:s}=function(e,a){n("☑️ getSubtitlesCache","");let t="",s=[],l=0;return a?.forEach(((a,g)=>{if(Array.isArray(a)){let i=a;i?.some(((a,t)=>!!e.includes(a||null)&&(l=t,n("🚧 getSubtitlesCache",`subtitlesIndex: ${l}`,""),!0)))&&(t=g,s=a)}})),n(`✅ getSubtitlesCache, subtitlesPlaylistURL: ${t}`,""),{subtitlesPlaylistURL:t,subtitles:s,subtitlesIndex:l}}($request.url,t.Playlists.Subtitle),{masterPlaylistURL:l,subtitlesPlaylistIndex:g}=function(e,a,t){n("☑️ getPlaylistCache","");let s="",l={},g=0;return a?.forEach(((a,i)=>{t?.forEach((t=>{if(Array.isArray(a?.[t])){let o=a?.[t];o?.some(((a,t)=>!!e.includes(a?.URI||a?.OPTION?.URI||null)&&(g=t,n("🚧 getPlaylistCache",`subtitlesPlaylistIndex: ${g}`,""),!0)))&&(s=i,l=a)}}))})),n("✅ getPlaylistCache",`masterPlaylistURL: ${JSON.stringify(s)}`,""),{masterPlaylistURL:s,subtitlesPlaylist:l,subtitlesPlaylistIndex:g}}(s,t.Playlists.Master,o),{subtitlesURIArray0:i,subtitlesURIArray1:u}=function(e,a,t,s,l){n("☑️ getSubtitlesArray","");const g=t?.get(e)||{};let i=g?.[l[0]]?.[a]?.URL||g?.[l[0]]?.[0]?.URL,o=g?.[l[1]]?.[a]?.URL||g?.[l[1]]?.[0]?.URL;n("🚧 getSubtitlesArray",`subtitlesPlaylistURL0: ${i}, subtitlesPlaylistURL1: ${o}`,"");let r=s.get(i)||[],u=s.get(o)||[];return n("✅ getSubtitlesArray",""),{subtitlesURIArray0:r,subtitlesURIArray1:u}}(l,g,t.Playlists.Master,t.Playlists.Subtitle,o);if(u.length){n(`🚧 subtitlesURIArray1.length: ${u.length}`,"");let a=R?.[R?.length-1]??function(e,a){n("☑️ Get Subtitles FileName",`url: ${e}`,"");let t;switch(a){case"Apple":t=request.url.match(/.+_(subtitles(_V\d)?-\d+\.webvtt)\?(.*)subtype=/)[1];break;case"Disney+":t=request.url.match(/([^\/]+\.vtt)\?(.*)subtype=/)[1];break;case"Hulu":t=request.url.match(/.+_(SEGMENT\d+_.+\.vtt)\?(.*)subtype=/)[1];break;default:t=null}return n("✅ Get Subtitles FileName",`fileName: ${t}`,""),t}($request.url,e);n(`🚧 fileName: ${a}`,""),r=function(e,a,t=[],s=[]){n(`☑️ Construct Subtitles Queue, fileName: ${a}`,"");let l=[];n(`🚧 Construct Subtitles Queue, VTTs1.length: ${t.length}, VTTs2.length: ${s.length}`,"");const g=t.findIndex((e=>e?.includes(a)));switch(n(`🚧 Construct Subtitles Queue, Index1: ${g}`,""),s.length){case 0:n("⚠ Construct Subtitles Queue, 长度为 0","");break;case 1:{n("⚠ Construct Subtitles Queue, 长度为 1","");let a={url:s[0],headers:e.headers};l.push(a);break}case t.length:{n("⚠ Construct Subtitles Queue, 长度相等","");let a={url:s[g],headers:e.headers};l.push(a);break}default:{n("⚠ Construct Subtitles Queue, 长度不等,需要计算","");const a=(g+1)/t.length;n(`🚧 Construct Subtitles Queue, Position1: ${a}, Index2: ${g}/${t.length}`,"");const i=Math.round(a*s.length-1);n(`🚧 Construct Subtitles Queue, Position2: ${a}, Index2: ${i}/${s.length}`,"");const o=Math.abs(s.length-t.length),r=Math.min(g,i),u=Math.max(g,i);n(`🚧 Construct Subtitles Queue, diffLength: ${o}, BeginIndex: ${r}, EndIndex: ${u}`,"");const m=s.slice(Math.max(0,r-o),Math.max(u,u+o)+1);n(`🚧 Construct Subtitles Queue, nearlyVTTs: ${JSON.stringify(m)}`,""),m.forEach((a=>{let t={url:a,headers:e.headers};l.push(t)}));break}}return n("✅ Construct Subtitles Queue",""),l}($request,a,i,u)}break;case"YouTube":if(n("⚠ YouTube",""),void 0===H.searchParams.get("tlang"))n("⚠ 未选择翻译语言,跳过","");else if(n("⚠ 已选择翻译语言",""),a.Tolerance=100,a.Position="Reverse"===a.Position?"Forward":"Reverse",!0===a.ShowOnly)n("⚠ 仅显示翻译后字幕,跳过","");else{n("⚠ 生成双语字幕",""),H.searchParams.set("lang",t.Playlists.Subtitle.get(H.searchParams.get("v"))||H.searchParams.get("lang")),H.searchParams.delete("tlang");let e={url:H.toString(),headers:$request.headers};r.push(e)}break;case"Netflix":n("⚠ Netflix","");break;case"Bilibili":n("⚠ Bilibili","")}break;case"Translate":default:n("⚠ 翻译字幕","");break;case"External":if(n("⚠ 外挂字幕",""),"URL"===a.SubVendor){let e={url:a.URL,headers:{Accept:"*/*","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"}};r.push(e)}}switch(B){case void 0:case"application/x-www-form-urlencoded":case"text/plain":default:case"application/x-mpegURL":case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/mpegurl":break;case"text/xml":case"text/html":case"text/plist":case"application/xml":case"application/plist":case"application/x-plist":body=l.parse($response.body),await Promise.all(r.map((async e=>{let t=await s(e).then((e=>l.parse(e.body)));body=new O(a).timedText(body,t,H.searchParams.get("kind"))}))),$response.body=l.stringify(body);break;case"text/vtt":case"application/vtt":body=g.parse($response.body),await Promise.all(r.map((async e=>{let t=await s(e).then((e=>g.parse(e.body)));body=new O(a).webVTT(body,t)}))),$response.body=g.stringify(body);break;case"text/json":case"application/json":body=JSON.parse($response.body??"{}"),await Promise.all(r.map((async e=>{let t=await s(e).then((e=>JSON.parse(e.body)));body=new O(a).JSON(body,t,H.searchParams.get("kind"))}))),$response.body=JSON.stringify(body);case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/grpc":case"application/grpc+proto":case"application/octet-stream":}case!1:}})().catch((a=>function(a){switch(e){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":case"Quantumult X":default:n("","❗️执行错误!",a,"");break;case"Node.js":n("","❗️执行错误!",a.stack,"")}}(a))).finally((()=>function(t={}){switch(e){case"Surge":t.policy&&a.set(t,"headers.X-Surge-Policy",t.policy),n("",`🚩 执行结束! 🕛 ${(new Date).getTime()/1e3-$script.startTime} 秒`,""),$done(t);break;case"Loon":t.policy&&(t.node=t.policy),n("",`🚩 执行结束! 🕛 ${(new Date-$script.startTime)/1e3} 秒`,""),$done(t);break;case"Stash":t.policy&&a.set(t,"headers.X-Stash-Selected-Proxy",encodeURI(t.policy)),n("",`🚩 执行结束! 🕛 ${(new Date-$script.startTime)/1e3} 秒`,""),$done(t);break;case"Egern":case"Shadowrocket":default:n("","🚩 执行结束!",""),$done(t);break;case"Quantumult X":t.policy&&a.set(t,"opts.policy",t.policy),delete t["auto-redirect"],delete t["auto-cookie"],delete t["binary-mode"],delete t.charset,delete t.host,delete t.insecure,delete t.method,delete t.opt,delete t.path,delete t.policy,delete t["policy-descriptor"],delete t.scheme,delete t.sessionIndex,delete t.statusCode,delete t.timeout,t.body instanceof ArrayBuffer?(t.bodyBytes=t.body,delete t.body):ArrayBuffer.isView(t.body)?(t.bodyBytes=t.body.buffer.slice(t.body.byteOffset,t.body.byteLength+t.body.byteOffset),delete t.body):t.body&&delete t.bodyBytes,n("","🚩 执行结束!",""),$done(t);break;case"Node.js":n("","🚩 执行结束!",""),process.exit(1)}}($response)));