// ==UserScript== // @name [VOT] - Voice Over Translation // @name:de [VOT] - Voice-Over-Video-Übersetzung // @name:es [VOT] - Traducción de vídeo en off // @name:fr [VOT] - Traduction vidéo voix-off // @name:it [VOT] - Traduzione Video fuori campo // @name:ru [VOT] - Закадровый перевод видео // @name:zh [VOT] - 画外音视频翻译 // @description A small extension that adds a Yandex Browser video translation to other browsers // @description:de Eine kleine Erweiterung, die eine Voice-over-Übersetzung von Videos aus dem Yandex-Browser zu anderen Browsern hinzufügt // @description:es Una pequeña extensión que agrega una traducción de voz en off de un video de Yandex Browser a otros navegadores // @description:fr Une petite extension qui ajoute la traduction vocale de la vidéo du Navigateur Yandex à d'autres navigateurs // @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser // @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры // @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译 // @grant unsafeWindow // @grant GM_addStyle // @grant GM_deleteValue // @grant GM_listValues // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_notification // @grant GM_info // @grant window.focus // @require https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.18/hls.light.min.js // @require https://gist.githubusercontent.com/ilyhalight/6eb5bb4dffc7ca9e3c57d6933e2452f3/raw/7ab38af2228d0bed13912e503bc8a9ee4b11828d/gm-addstyle-polyfill.js // @match *://*.youtube.com/* // @match *://*.youtube-nocookie.com/* // @match *://*.youtubekids.com/* // @match *://*.twitch.tv/* // @match *://*.xvideos.com/* // @match *://*.xvideos-ar.com/* // @match *://*.xvideos005.com/* // @match *://*.xv-ru.com/* // @match *://*.pornhub.com/* // @match *://*.pornhub.org/* // @match *://*.vk.com/* // @match *://*.vkvideo.ru/* // @match *://*.vk.ru/* // @match *://*.vimeo.com/* // @match *://*.imdb.com/* // @match *://*.9gag.com/* // @match *://*.twitter.com/* // @match *://*.x.com/* // @match *://*.facebook.com/* // @match *://*.rutube.ru/* // @match *://*.bilibili.com/* // @match *://my.mail.ru/* // @match *://*.bitchute.com/* // @match *://*.coursera.org/* // @match *://*.udemy.com/course/* // @match *://*.tiktok.com/* // @match *://*.douyin.com/* // @match *://rumble.com/* // @match *://*.eporner.com/* // @match *://*.dailymotion.com/* // @match *://*.ok.ru/* // @match *://trovo.live/* // @match *://disk.yandex.ru/* // @match *://disk.yandex.kz/* // @match *://disk.yandex.com/* // @match *://disk.yandex.com.am/* // @match *://disk.yandex.com.ge/* // @match *://disk.yandex.com.tr/* // @match *://disk.yandex.by/* // @match *://disk.yandex.az/* // @match *://disk.yandex.co.il/* // @match *://disk.yandex.ee/* // @match *://disk.yandex.lt/* // @match *://disk.yandex.lv/* // @match *://disk.yandex.md/* // @match *://disk.yandex.net/* // @match *://disk.yandex.tj/* // @match *://disk.yandex.tm/* // @match *://disk.yandex.uz/* // @match *://youtube.googleapis.com/embed/* // @match *://*.banned.video/* // @match *://*.madmaxworld.tv/* // @match *://*.weverse.io/* // @match *://*.newgrounds.com/* // @match *://*.egghead.io/* // @match *://*.youku.com/* // @match *://*.archive.org/* // @match *://*.patreon.com/* // @match *://*.reddit.com/* // @match *://*.kodik.info/* // @match *://*.kodik.biz/* // @match *://*.kodik.cc/* // @match *://*.kick.com/* // @match *://developer.apple.com/* // @match *://dev.epicgames.com/* // @match *://*.rapid-cloud.co/* // @match *://odysee.com/* // @match *://learning.sap.com/* // @match *://*.watchporn.to/* // @match *://*.linkedin.com/* // @match *://*.incestflix.net/* // @match *://*.incestflix.to/* // @match *://*.porntn.com/* // @match *://*.dzen.ru/* // @match *://*.cloudflarestream.com/* // @match *://*.loom.com/* // @match *://*.artstation.com/learning/* // @match *://*.rt.com/* // @match *://*.bitview.net/* // @match *://*.kickstarter.com/* // @match *://*.thisvid.com/* // @match *://*.ign.com/* // @match *://*.bunkr.site/* // @match *://*.bunkr.black/* // @match *://*.bunkr.cat/* // @match *://*.bunkr.media/* // @match *://*.bunkr.red/* // @match *://*.bunkr.ws/* // @match *://*.bunkr.org/* // @match *://*.bunkr.sk/* // @match *://*.bunkr.si/* // @match *://*.bunkr.su/* // @match *://*.bunkr.ci/* // @match *://*.bunkr.cr/* // @match *://*.bunkr.fi/* // @match *://*.bunkr.ph/* // @match *://*.bunkr.pk/* // @match *://*.bunkr.ps/* // @match *://*.bunkr.ru/* // @match *://*.bunkr.la/* // @match *://*.bunkr.is/* // @match *://*.bunkr.to/* // @match *://*.bunkr.ac/* // @match *://*.bunkr.ax/* // @match *://web.telegram.org/k/* // @match *://t2mc.toil.cc/* // @match *://mylearn.oracle.com/* // @match *://learn.deeplearning.ai/* // @match *://learn-staging.deeplearning.ai/* // @match *://learn-dev.deeplearning.ai/* // @match *://*.netacad.com/content/i2cs/* // @match *://*/*.mp4* // @match *://*/*.webm* // @match *://*.yewtu.be/* // @match *://yt.artemislena.eu/* // @match *://invidious.flokinet.to/* // @match *://iv.melmac.space/* // @match *://inv.nadeko.net/* // @match *://inv.tux.pizza/* // @match *://invidious.private.coffee/* // @match *://yt.drgnz.club/* // @match *://vid.puffyan.us/* // @match *://invidious.dhusch.de/* // @match *://*.piped.video/* // @match *://piped.tokhmi.xyz/* // @match *://piped.moomoo.me/* // @match *://piped.syncpundit.io/* // @match *://piped.mha.fi/* // @match *://watch.whatever.social/* // @match *://piped.garudalinux.org/* // @match *://efy.piped.pages.dev/* // @match *://watch.leptons.xyz/* // @match *://piped.lunar.icu/* // @match *://yt.dc09.ru/* // @match *://piped.mint.lgbt/* // @match *://*.il.ax/* // @match *://piped.privacy.com.de/* // @match *://piped.esmailelbob.xyz/* // @match *://piped.projectsegfau.lt/* // @match *://piped.in.projectsegfau.lt/* // @match *://piped.us.projectsegfau.lt/* // @match *://piped.privacydev.net/* // @match *://piped.palveluntarjoaja.eu/* // @match *://piped.smnz.de/* // @match *://piped.adminforge.de/* // @match *://piped.qdi.fi/* // @match *://piped.hostux.net/* // @match *://piped.chauvet.pro/* // @match *://piped.jotoma.de/* // @match *://piped.pfcd.me/* // @match *://piped.frontendfriendly.xyz/* // @match *://proxitok.pabloferreiro.es/* // @match *://proxitok.pussthecat.org/* // @match *://tok.habedieeh.re/* // @match *://proxitok.esmailelbob.xyz/* // @match *://proxitok.privacydev.net/* // @match *://tok.artemislena.eu/* // @match *://tok.adminforge.de/* // @match *://tt.vern.cc/* // @match *://cringe.whatever.social/* // @match *://proxitok.lunar.icu/* // @match *://proxitok.privacy.com.de/* // @match *://peertube.1312.media/* // @match *://tube.shanti.cafe/* // @match *://*.bee-tube.fr/* // @match *://video.sadmin.io/* // @match *://*.dalek.zone/* // @match *://review.peertube.biz/* // @match *://*.peervideo.club/* // @match *://tube.la-dina.net/* // @match *://peertube.tmp.rcp.tf/* // @match *://*.peertube.su/* // @match *://video.blender.org/* // @match *://videos.viorsan.com/* // @match *://tube-sciences-technologies.apps.education.fr/* // @match *://tube-numerique-educatif.apps.education.fr/* // @match *://tube-arts-lettres-sciences-humaines.apps.education.fr/* // @match *://*.beetoons.tv/* // @match *://comics.peertube.biz/* // @match *://*.makertube.net/* // @match *://*.poketube.fun/* // @match *://pt.sudovanilla.org/* // @match *://poke.ggtyler.dev/* // @match *://poke.uk2.littlekai.co.uk/* // @match *://poke.blahai.gay/* // @match *://*.ricktube.ru/* // @match *://*.coursehunter.net/* // @match *://*.coursetrain.net/* // @exclude file://*/*.mp4* // @exclude file://*/*.webm* // @exclude *://accounts.youtube.com/* // @connect yandex.ru // @connect disk.yandex.kz // @connect disk.yandex.com // @connect disk.yandex.com.am // @connect disk.yandex.com.ge // @connect disk.yandex.com.tr // @connect disk.yandex.by // @connect disk.yandex.az // @connect disk.yandex.co.il // @connect disk.yandex.ee // @connect disk.yandex.lt // @connect disk.yandex.lv // @connect disk.yandex.md // @connect disk.yandex.net // @connect disk.yandex.tj // @connect disk.yandex.tm // @connect disk.yandex.uz // @connect yandex.net // @connect timeweb.cloud // @connect raw.githubusercontent.com // @connect vimeo.com // @connect toil.cc // @connect deno.dev // @connect onrender.com // @connect workers.dev // @connect speed.cloudflare.com // @connect porntn.com // @connect googlevideo.com // @namespace vot-min // @version 1.10.5 // @icon https://translate.yandex.ru/icons/favicon.ico // @author Toil, SashaXser, MrSoczekXD, mynovelhost, sodapng // @homepageURL https://github.com/ilyhalight/voice-over-translation // @updateURL https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/dist/vot-min.user.js // @downloadURL https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/dist/vot-min.user.js // @supportURL https://github.com/ilyhalight/voice-over-translation/issues // ==/UserScript== (()=>{var e={"./node_modules/@vot.js/core/dist/client.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{Ay:()=>g,Pu:()=>_});var i=n(`./node_modules/@vot.js/shared/dist/data/config.js`),a=n(`./node_modules/@vot.js/shared/dist/utils/logger.js`),o=n(`./node_modules/@vot.js/shared/dist/protos/yandex.js`),s=n(`./node_modules/@vot.js/shared/dist/secure.js`),c=n(`./node_modules/@vot.js/shared/dist/utils/utils.js`),l=n(`./node_modules/@vot.js/core/dist/protobuf.js`),u=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),d=n(`./node_modules/@vot.js/core/dist/utils/vot.js`),f=n(`./src/utils/VOTLocalizedError.js`),p=e([f]);f=(p.then?(await p)():p)[0];class m extends Error{data;constructor(e,t=void 0){super(e),this.data=t,this.name=`VOTJSError`,this.message=e}}class h{host;schema;fetch;fetchOpts;sessions={};userAgent=i.A.userAgent;headers={"User-Agent":this.userAgent,Accept:`application/x-protobuf`,"Accept-Language":`en`,"Content-Type":`application/x-protobuf`,Pragma:`no-cache`,"Cache-Control":`no-cache`};hostSchemaRe=/(http(s)?):\/\//;constructor({host:e=i.A.host,fetchFn:t=c.u9,fetchOpts:n={},headers:r={}}={}){let a=this.hostSchemaRe.exec(e)?.[1];this.host=a?e.replace(`${a}://`,``):e,this.schema=a??`https`,this.fetch=t,this.fetchOpts=n,this.headers={...this.headers,...r}}async request(e,t,n={},r=`POST`){let i=this.getOpts(new Blob([t]),n,r);try{let t=await this.fetch(`${this.schema}://${this.host}${e}`,i),n=await t.arrayBuffer();return{success:t.status===200,data:n}}catch(e){return{success:!1,data:e?.message}}}async requestJSON(e,t=null,n={},r=`POST`){let i=this.getOpts(t,{"Content-Type":`application/json`,...n},r);try{let t=await this.fetch(`${this.schema}://${this.host}${e}`,i),n=await t.json();return{success:t.status===200,data:n}}catch(e){return{success:!1,data:e?.message}}}getOpts(e,t={},n=`POST`){return{method:n,headers:{...this.headers,...t},body:e,...this.fetchOpts}}async getSession(e){let t=(0,c.lg)(),n=this.sessions[e];if(n&&n.timestamp+n.expires>t)return n;let{secretKey:r,expires:i,uuid:a}=await this.createSession(e);return this.sessions[e]={secretKey:r,expires:i,timestamp:t,uuid:a},this.sessions[e]}async createSession(e){let t=(0,s.yk)(),n=l.P.encodeSessionRequest(t,e),r=await this.request(`/session/create`,n,{"Vtrans-Signature":await(0,s.dD)(n)});if(!r.success)throw new m(`Failed to request create session`,r);let i=l.P.decodeSessionResponse(r.data);return{...i,uuid:t}}}class g extends h{hostVOT;schemaVOT;apiToken;requestLang;responseLang;paths={videoTranslation:`/video-translation/translate`,videoTranslationFailAudio:`/video-translation/fail-audio-js`,videoTranslationAudio:`/video-translation/audio`,videoTranslationCache:`/video-translation/cache`,videoSubtitles:`/video-subtitles/get-subtitles`,streamPing:`/stream-translation/ping-stream`,streamTranslation:`/stream-translation/translate-stream`};isCustomLink(e){return!!(/\.(m3u8|m4(a|v)|mpd)/.exec(e)??/^https:\/\/cdn\.qstv\.on\.epicgames\.com/.exec(e))}headersVOT={"User-Agent":`vot.js/${i.A.version}`,"Content-Type":`application/json`,Pragma:`no-cache`,"Cache-Control":`no-cache`};constructor({host:e,hostVOT:t=i.A.hostVOT,fetchFn:n,fetchOpts:r,requestLang:a=`en`,responseLang:o=`ru`,apiToken:s,headers:c}={}){super({host:e,fetchFn:n,fetchOpts:r,headers:c});let l=this.hostSchemaRe.exec(t)?.[1];this.hostVOT=l?t.replace(`${l}://`,``):t,this.schemaVOT=l??`https`,this.requestLang=a,this.responseLang=o,this.apiToken=s}get apiTokenHeader(){return this.apiToken?{Authorization:`OAuth ${this.apiToken}`}:{}}async requestVOT(e,t,n={}){let r=this.getOpts(JSON.stringify(t),{...this.headersVOT,...n});try{let t=await this.fetch(`${this.schemaVOT}://${this.hostVOT}${e}`,r),n=await t.json();return{success:t.status===200,data:n}}catch(e){return{success:!1,data:e?.message}}}async translateVideoYAImpl({videoData:e,requestLang:t=this.requestLang,responseLang:n=this.responseLang,translationHelp:r=null,headers:o={},extraOpts:c={},shouldSendFailedAudio:d=!0}){let{url:p,duration:h=i.A.defaultDuration}=e,g=await this.getSession(`video-translation`),_=l.S.encodeTranslationRequest(p,h,t,n,r,c),v=this.paths.videoTranslation,y=await(0,s.C0)(`Vtrans`,g,_,v),b=c.useLivelyVoice?this.apiTokenHeader:{},x=await this.request(v,_,{...y,...b,...o});if(!x.success)throw new f.n(`requestTranslationFailed`);let S=l.S.decodeTranslationResponse(x.data);a.A.log(`translateVideo`,S);let{status:C,translationId:w}=S;switch(C){case u.v.FAILED:throw S?.message?new m(`Yandex couldn't translate video`,S):new f.n(`requestTranslationFailed`);case u.v.FINISHED:case u.v.PART_CONTENT:if(!S.url)throw new f.n(`audioNotReceived`);return{translationId:w,translated:!0,url:S.url,status:C,remainingTime:S.remainingTime??-1};case u.v.WAITING:case u.v.LONG_WAITING:return{translationId:w,translated:!1,status:C,remainingTime:S.remainingTime};case u.v.AUDIO_REQUESTED:return p.startsWith(`https://youtu.be/`)&&d?(await this.requestVtransFailAudio(p),await this.requestVtransAudio(p,S.translationId,{audioFile:new Uint8Array,fileId:u.J.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME}),await this.translateVideoYAImpl({videoData:e,requestLang:t,responseLang:n,translationHelp:r,headers:o,shouldSendFailedAudio:!1})):{translationId:w,translated:!1,status:C,remainingTime:S.remainingTime??-1};case u.v.SESSION_REQUIRED:throw new m(`Yandex auth required to translate video. See docs for more info`,S);default:throw a.A.error(`Unknown response`,S),new m(`Unknown response from Yandex`,S)}}async translateVideoVOTImpl({url:e,videoId:t,service:n,requestLang:r=this.requestLang,responseLang:i=this.responseLang,headers:a={},provider:o=`yandex`}){let s=(0,d.p)(n,t,e),c=await this.requestVOT(this.paths.videoTranslation,{provider:o,service:s.service,video_id:s.videoId,from_lang:r,to_lang:i,raw_video:e},{...a});if(!c.success)throw new f.n(`requestTranslationFailed`);let l=c.data;switch(l.status){case`failed`:throw new m(`Yandex couldn't translate video`,l);case`success`:if(!l.translated_url)throw new f.n(`audioNotReceived`);return{translationId:String(l.id),translated:!0,url:l.translated_url,status:1,remainingTime:-1};case`waiting`:return{translationId:``,translated:!1,remainingTime:l.remaining_time,status:2,message:l.message}}}async requestVtransFailAudio(e){let t=await this.requestJSON(this.paths.videoTranslationFailAudio,JSON.stringify({video_url:e}),void 0,`PUT`);if(!t.data||typeof t.data==`string`||t.data.status!==1)throw new m(`Failed to request to fake video translation fail audio js`,t);return t}async requestVtransAudio(e,t,n,r,i={}){let a=await this.getSession(`video-translation`),o=l.S.isPartialAudioBuffer(n)?l.S.encodeTranslationAudioRequest(e,t,n,r):l.S.encodeTranslationAudioRequest(e,t,n,void 0),c=this.paths.videoTranslationAudio,u=await(0,s.C0)(`Vtrans`,a,o,c),d=await this.request(c,o,{...u,...i},`PUT`);if(!d.success)throw new m(`Failed to request video translation audio`,d);return l.S.decodeTranslationAudioResponse(d.data)}async translateVideoCache({videoData:e,requestLang:t=this.requestLang,responseLang:n=this.responseLang,headers:r={}}){let{url:a,duration:o=i.A.defaultDuration}=e,c=await this.getSession(`video-translation`),u=l.S.encodeTranslationCacheRequest(a,o,t,n),d=this.paths.videoTranslationCache,f=await(0,s.C0)(`Vtrans`,c,u,d),p=await this.request(d,u,{...f,...r},`POST`);if(!p.success)throw new m(`Failed to request video translation cache`,p);return l.S.decodeTranslationCacheResponse(p.data)}async translateVideo({videoData:e,requestLang:t=this.requestLang,responseLang:n=this.responseLang,translationHelp:r=null,headers:i={},extraOpts:a={},shouldSendFailedAudio:o=!0}){let{url:s,videoId:c,host:l}=e;return this.isCustomLink(s)?await this.translateVideoVOTImpl({url:s,videoId:c,service:l,requestLang:t,responseLang:n,headers:i,provider:a.useLivelyVoice?`yandex_lively`:`yandex`}):await this.translateVideoYAImpl({videoData:e,requestLang:t,responseLang:n,translationHelp:r,headers:i,extraOpts:a,shouldSendFailedAudio:o})}async getSubtitlesYAImpl({videoData:e,requestLang:t=this.requestLang,headers:n={}}){let{url:r}=e,i=await this.getSession(`video-translation`),a=l.S.encodeSubtitlesRequest(r,t),o=this.paths.videoSubtitles,c=await(0,s.C0)(`Vsubs`,i,a,o),u=await this.request(o,a,{...c,...n});if(!u.success)throw new m(`Failed to request video subtitles`,u);let d=l.S.decodeSubtitlesResponse(u.data),f=d.subtitles.map(e=>{let{language:t,url:n,translatedLanguage:r,translatedUrl:i}=e;return{language:t,url:n,translatedLanguage:r,translatedUrl:i}});return{waiting:d.waiting,subtitles:f}}async getSubtitlesVOTImpl({url:e,videoId:t,service:n,headers:r={}}){let i=(0,d.p)(n,t,e),a=await this.requestVOT(this.paths.videoSubtitles,{provider:`yandex`,service:i.service,video_id:i.videoId},r);if(!a.success)throw new m(`Failed to request video subtitles`,a);let o=a.data,s=o.reduce((e,t)=>{if(!t.lang_from)return e;let n=o.find(e=>e.lang===t.lang_from);return n&&e.push({language:n.lang,url:n.subtitle_url,translatedLanguage:t.lang,translatedUrl:t.subtitle_url}),e},[]);return{waiting:!1,subtitles:s}}async getSubtitles({videoData:e,requestLang:t=this.requestLang,headers:n={}}){let{url:r,videoId:i,host:a}=e;return this.isCustomLink(r)?await this.getSubtitlesVOTImpl({url:r,videoId:i,service:a,headers:n}):await this.getSubtitlesYAImpl({videoData:e,requestLang:t,headers:n})}async pingStream({pingId:e,headers:t={}}){let n=await this.getSession(`video-translation`),r=l.S.encodeStreamPingRequest(e),i=this.paths.streamPing,a=await(0,s.C0)(`Vtrans`,n,r,i),o=await this.request(i,r,{...a,...t});if(!o.success)throw new m(`Failed to request stream ping`,o);return!0}async translateStream({videoData:e,requestLang:t=this.requestLang,responseLang:n=this.responseLang,headers:r={}}){let{url:i}=e;if(this.isCustomLink(i))throw new f.n(`VOTStreamNotSupportedUrl`);let c=await this.getSession(`video-translation`),u=l.S.encodeStreamRequest(i,t,n),d=this.paths.streamTranslation,p=await(0,s.C0)(`Vtrans`,c,u,d),h=await this.request(d,u,{...p,...r});if(!h.success)throw new m(`Failed to request stream translation`,h);let g=l.S.decodeStreamResponse(h.data),_=g.interval;switch(_){case o.q8.NO_CONNECTION:case o.q8.TRANSLATING:return{translated:!1,interval:_,message:_===o.q8.NO_CONNECTION?`streamNoConnectionToServer`:`translationTakeFewMinutes`};case o.q8.STREAMING:return{translated:!0,interval:_,pingId:g.pingId,result:g.translatedInfo};default:throw a.A.error(`Unknown response`,g),new m(`Unknown response from Yandex`,g)}}}class _ extends g{constructor(e={}){e.host=e.host??i.A.hostWorker,super(e)}async request(e,t,n={},r=`POST`){let i=this.getOpts(JSON.stringify({headers:{...this.headers,...n},body:Array.from(t)}),{"Content-Type":`application/json`},r);try{let t=await this.fetch(`${this.schema}://${this.host}${e}`,i),n=await t.arrayBuffer();return{success:t.status===200,data:n}}catch(e){return{success:!1,data:e?.message}}}async requestJSON(e,t=null,n={},r=`POST`){let i=this.getOpts(JSON.stringify({headers:{...this.headers,"Content-Type":`application/json`,Accept:`application/json`,...n},body:t}),{Accept:`application/json`,"Content-Type":`application/json`},r);try{let t=await this.fetch(`${this.schema}://${this.host}${e}`,i),n=await t.json();return{success:t.status===200,data:n}}catch(e){return{success:!1,data:e?.message}}}}r()}catch(e){r(e)}})},"./node_modules/@vot.js/core/dist/protobuf.js":(e,t,n)=>{"use strict";n.d(t,{P:()=>a,S:()=>i});var r=n(`./node_modules/@vot.js/shared/dist/protos/yandex.js`);class i{static encodeTranslationRequest(e,t,n,i,a,{forceSourceLang:o=!1,wasStream:s=!1,videoTitle:c=``,bypassCache:l=!1,useLivelyVoice:u=!1,firstRequest:d=!0}={}){return r.yy.encode({url:e,firstRequest:d,duration:t,unknown0:1,language:n,forceSourceLang:o,unknown1:0,translationHelp:a??[],responseLanguage:i,wasStream:s,unknown2:1,unknown3:2,bypassCache:l,useLivelyVoice:u,videoTitle:c}).finish()}static decodeTranslationResponse(e){return r.AJ.decode(new Uint8Array(e))}static encodeTranslationCacheRequest(e,t,n,i){return r.Yx.encode({url:e,duration:t,language:n,responseLanguage:i}).finish()}static decodeTranslationCacheResponse(e){return r.ZK.decode(new Uint8Array(e))}static isPartialAudioBuffer(e){return`chunkId`in e}static encodeTranslationAudioRequest(e,t,n,a){return a&&i.isPartialAudioBuffer(n)?r.Y7.encode({url:e,translationId:t,partialAudioInfo:{...a,audioBuffer:n}}).finish():r.Y7.encode({url:e,translationId:t,audioInfo:n}).finish()}static decodeTranslationAudioResponse(e){return r.Wi.decode(new Uint8Array(e))}static encodeSubtitlesRequest(e,t){return r.P4.encode({url:e,language:t}).finish()}static decodeSubtitlesResponse(e){return r.LD.decode(new Uint8Array(e))}static encodeStreamPingRequest(e){return r.kO.encode({pingId:e}).finish()}static encodeStreamRequest(e,t,n){return r.Xv.encode({url:e,language:t,responseLanguage:n,unknown0:1,unknown1:0}).finish()}static decodeStreamResponse(e){return r.n_.decode(new Uint8Array(e))}}class a{static encodeSessionRequest(e,t){return r.ls.encode({uuid:e,module:t}).finish()}static decodeSessionResponse(e){return r.Bv.decode(new Uint8Array(e))}}},"./node_modules/@vot.js/core/dist/types/service.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>r});var r;(function(e){e.custom=`custom`,e.directlink=`custom`,e.youtube=`youtube`,e.piped=`piped`,e.invidious=`invidious`,e.vk=`vk`,e.nine_gag=`nine_gag`,e.gag=`nine_gag`,e.twitch=`twitch`,e.proxitok=`proxitok`,e.tiktok=`tiktok`,e.vimeo=`vimeo`,e.xvideos=`xvideos`,e.pornhub=`pornhub`,e.twitter=`twitter`,e.x=`twitter`,e.rumble=`rumble`,e.facebook=`facebook`,e.rutube=`rutube`,e.coub=`coub`,e.bilibili=`bilibili`,e.mail_ru=`mailru`,e.mailru=`mailru`,e.bitchute=`bitchute`,e.eporner=`eporner`,e.peertube=`peertube`,e.dailymotion=`dailymotion`,e.trovo=`trovo`,e.yandexdisk=`yandexdisk`,e.ok_ru=`okru`,e.okru=`okru`,e.googledrive=`googledrive`,e.bannedvideo=`bannedvideo`,e.weverse=`weverse`,e.newgrounds=`newgrounds`,e.egghead=`egghead`,e.youku=`youku`,e.archive=`archive`,e.kodik=`kodik`,e.patreon=`patreon`,e.reddit=`reddit`,e.kick=`kick`,e.apple_developer=`apple_developer`,e.appledeveloper=`apple_developer`,e.poketube=`poketube`,e.epicgames=`epicgames`,e.odysee=`odysee`,e.coursehunterLike=`coursehunterLike`,e.sap=`sap`,e.watchpornto=`watchpornto`,e.linkedin=`linkedin`,e.ricktube=`ricktube`,e.incestflix=`incestflix`,e.porntn=`porntn`,e.dzen=`dzen`,e.cloudflarestream=`cloudflarestream`,e.loom=`loom`,e.rtnews=`rtnews`,e.bitview=`bitview`,e.thisvid=`thisvid`,e.ign=`ign`,e.bunkr=`bunkr`,e.imdb=`imdb`,e.telegram=`telegram`})(r||={})},"./node_modules/@vot.js/core/dist/types/yandex.js":(e,t,n)=>{"use strict";n.d(t,{J:()=>i,v:()=>r});var r;(function(e){e[e.FAILED=0]=`FAILED`,e[e.FINISHED=1]=`FINISHED`,e[e.WAITING=2]=`WAITING`,e[e.LONG_WAITING=3]=`LONG_WAITING`,e[e.PART_CONTENT=5]=`PART_CONTENT`,e[e.AUDIO_REQUESTED=6]=`AUDIO_REQUESTED`,e[e.SESSION_REQUIRED=7]=`SESSION_REQUIRED`})(r||={});var i;(function(e){e.WEB_API_VIDEO_SRC_FROM_IFRAME=`web_api_video_src_from_iframe`,e.WEB_API_VIDEO_SRC=`web_api_video_src`,e.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME=`web_api_get_all_generating_urls_data_from_iframe`,e.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME_TMP_EXP=`web_api_get_all_generating_urls_data_from_iframe_tmp_exp`,e.WEB_API_REPLACED_FETCH_INSIDE_IFRAME=`web_api_replaced_fetch_inside_iframe`,e.ANDROID_API=`android_api`,e.WEB_API_SLOW=`web_api_slow`,e.WEB_API_STEAL_SIG_AND_N=`web_api_steal_sig_and_n`,e.WEB_API_COMBINED=`web_api_get_all_generating_urls_data_from_iframe,web_api_steal_sig_and_n`})(i||={})},"./node_modules/@vot.js/core/dist/utils/videoData.js":(e,t,n)=>{"use strict";n.d(t,{$:()=>i,A:()=>r});class r extends Error{constructor(e){super(e),this.name=`VideoDataError`,this.message=e}}let i=/(file:\/\/(\/)?|(http(s)?:\/\/)(127\.0\.0\.1|localhost|192\.168\.(\d){1,3}\.(\d){1,3}))/},"./node_modules/@vot.js/core/dist/utils/vot.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>i});var r=n(`./node_modules/@vot.js/core/dist/types/service.js`);function i(e,t,n){return e===r.r.patreon?{service:`mux`,videoId:new URL(n).pathname.slice(1)}:{service:e,videoId:t}}},"./node_modules/@vot.js/ext/dist/client.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>s,P:()=>c});var i=n(`./node_modules/@vot.js/core/dist/client.js`),a=n(`./node_modules/@vot.js/shared/dist/secure.js`),o=e([i]);i=(o.then?(await o)():o)[0];class s extends i.Ay{constructor(e){super(e),this.headers={...a.MG,...this.headers}}}class c extends i.Pu{constructor(e){super(e),this.headers={...a.MG,...this.headers}}}r()}catch(e){r(e)}})},"./node_modules/@vot.js/ext/dist/data/sites.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(`./node_modules/@vot.js/core/dist/types/service.js`),i=n(`./node_modules/@vot.js/shared/dist/data/alternativeUrls.js`),a=n(`./node_modules/@vot.js/ext/dist/types/service.js`);let o=[{additionalData:`mobile`,host:r.r.youtube,url:`https://youtu.be/`,match:/^m.youtube.com$/,selector:`.player-container`,needExtraData:!0},{host:r.r.youtube,url:`https://youtu.be/`,match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:`.html5-video-container:not(#inline-player *)`,needExtraData:!0},{host:r.r.invidious,url:`https://youtu.be/`,match:i.Xm,selector:`#player`,needBypassCSP:!0},{host:r.r.piped,url:`https://youtu.be/`,match:i.Jo,selector:`.shaka-video-container`,needBypassCSP:!0},{host:r.r.poketube,url:`https://youtu.be/`,match:i.sx,selector:`.video-player-container`},{host:r.r.ricktube,url:`https://youtu.be/`,match:i.My,selector:`#oframeplayer > pjsdiv:has(video)`},{additionalData:`mobile`,host:r.r.vk,url:`https://vk.com/video?z=`,match:[/^m.vk.(com|ru)$/,/^m.vkvideo.ru$/],selector:`vk-video-player`,shadowRoot:!0,needExtraData:!0},{additionalData:`clips`,host:r.r.vk,url:`https://vk.com/video?z=`,match:/^(www.|m.)?vk.(com|ru)$/,selector:`div[data-testid="clipcontainer-video"]`,needExtraData:!0},{host:r.r.vk,url:`https://vk.com/video?z=`,match:[/^(www.|m.)?vk.(com|ru)$/,/^(www.|m.)?vkvideo.ru$/],selector:`.videoplayer_media`,needExtraData:!0},{host:r.r.nine_gag,url:`https://9gag.com/gag/`,match:/^9gag.com$/,selector:`.video-post`,needExtraData:!0},{host:r.r.twitch,url:`https://twitch.tv/`,match:[/^m.twitch.tv$/,/^(www.)?twitch.tv$/,/^clips.twitch.tv$/,/^player.twitch.tv$/],needExtraData:!0,selector:`.video-ref, main > div > section > div > div > div`},{host:r.r.proxitok,url:`https://www.tiktok.com/`,match:i.TP,selector:`.column.has-text-centered`},{host:r.r.tiktok,url:`https://www.tiktok.com/`,match:/^(www.)?tiktok.com$/,selector:null},{host:a.Q.douyin,url:`https://www.douyin.com/`,match:/^(www.)?douyin.com/,selector:`.xg-video-container`,needExtraData:!0,needBypassCSP:!0},{host:r.r.vimeo,url:`https://vimeo.com/`,match:/^vimeo.com$/,needExtraData:!0,selector:`.player`},{host:r.r.vimeo,url:`https://player.vimeo.com/`,match:/^player.vimeo.com$/,additionalData:`embed`,needExtraData:!0,needBypassCSP:!0,selector:`.player`},{host:r.r.xvideos,url:`https://www.xvideos.com/`,match:[/^(www.)?xvideos(-ar)?.com$/,/^(www.)?xvideos(\d\d\d).com$/,/^(www.)?xv-ru.com$/],selector:`#hlsplayer`,needBypassCSP:!0},{host:r.r.pornhub,url:`https://rt.pornhub.com/view_video.php?viewkey=`,match:/^[a-z]+.pornhub.(com|org)$/,selector:`.mainPlayerDiv > .video-element-wrapper-js > div`,eventSelector:`.mgp_eventCatcher`},{additionalData:`embed`,host:r.r.pornhub,url:`https://rt.pornhub.com/view_video.php?viewkey=`,match:e=>/^[a-z]+.pornhub.(com|org)$/.exec(e.host)&&e.pathname.startsWith(`/embed/`),selector:`#player`},{host:r.r.twitter,url:`https://twitter.com/i/status/`,match:/^(twitter|x).com$/,selector:`div[data-testid="videoComponent"] > div:nth-child(1) > div`,eventSelector:`div[data-testid="videoPlayer"]`,needBypassCSP:!0},{host:r.r.rumble,url:`https://rumble.com/`,match:/^rumble.com$/,selector:`#videoPlayer > .videoPlayer-Rumble-cls > div`},{host:r.r.facebook,url:`https://facebook.com/`,match:e=>e.host.includes(`facebook.com`)&&e.pathname.includes(`/videos/`),selector:`div[role="main"] div[data-pagelet$="video" i]`,needBypassCSP:!0},{additionalData:`reels`,host:r.r.facebook,url:`https://facebook.com/`,match:e=>e.host.includes(`facebook.com`)&&e.pathname.includes(`/reel/`),selector:`div[role="main"]`,needBypassCSP:!0},{host:r.r.rutube,url:`https://rutube.ru/video/`,match:/^rutube.ru$/,selector:`.video-player > div > div > div:nth-child(2)`},{additionalData:`embed`,host:r.r.rutube,url:`https://rutube.ru/video/`,match:/^rutube.ru$/,selector:`#app > div > div`},{host:r.r.bilibili,url:`https://www.bilibili.com/`,match:/^(www|m|player).bilibili.com$/,selector:`.bpx-player-video-wrap`},{additionalData:`old`,host:r.r.bilibili,url:`https://www.bilibili.com/`,match:/^(www|m).bilibili.com$/,selector:null},{host:r.r.mailru,url:`https://my.mail.ru/`,match:/^my.mail.ru$/,selector:`#b-video-wrapper`},{host:r.r.bitchute,url:`https://www.bitchute.com/video/`,match:/^(www.)?bitchute.com$/,selector:`.video-js`},{host:r.r.eporner,url:`https://www.eporner.com/`,match:/^(www.)?eporner.com$/,selector:`.vjs-v7`},{host:r.r.peertube,url:`stub`,match:i.fV,selector:`.vjs-v7`},{host:r.r.dailymotion,url:`https://dai.ly/`,match:/^geo([\d]+)?.dailymotion.com$/,selector:`.player`},{host:r.r.trovo,url:`https://trovo.live/s/`,match:/^trovo.live$/,selector:`.player-video`},{host:r.r.yandexdisk,url:`https://yadi.sk/`,match:/^disk.yandex.(ru|kz|com(\.(am|ge|tr))?|by|az|co\.il|ee|lt|lv|md|net|tj|tm|uz)$/,selector:`.video-player__player > div:nth-child(1)`,eventSelector:`.video-player__player`,needBypassCSP:!0,needExtraData:!0},{host:r.r.okru,url:`https://ok.ru/video/`,match:/^ok.ru$/,selector:`vk-video-player`,shadowRoot:!0},{host:r.r.googledrive,url:`https://drive.google.com/file/d/`,match:/^youtube.googleapis.com$/,selector:`.html5-video-container`},{host:r.r.bannedvideo,url:`https://madmaxworld.tv/watch?id=`,match:/^(www.)?banned.video|madmaxworld.tv$/,selector:`.vjs-v7`,needExtraData:!0},{host:r.r.weverse,url:`https://weverse.io/`,match:/^weverse.io$/,selector:`.webplayer-internal-source-wrapper`,needExtraData:!0},{host:r.r.newgrounds,url:`https://www.newgrounds.com/`,match:/^(www.)?newgrounds.com$/,selector:`.ng-video-player`},{host:r.r.egghead,url:`https://egghead.io/`,match:/^egghead.io$/,selector:`.cueplayer-react-video-holder`},{host:r.r.youku,url:`https://v.youku.com/`,match:/^v.youku.com$/,selector:`#ykPlayer`},{host:r.r.archive,url:`https://archive.org/details/`,match:/^archive.org$/,selector:`.jw-media`},{host:r.r.kodik,url:`stub`,match:/^kodik.(info|biz|cc)$/,selector:`.fp-player`,needExtraData:!0},{host:r.r.patreon,url:`stub`,match:/^(www.)?patreon.com$/,selector:`div[data-tag="post-card"] div[elevation="subtle"] > div > div > div > div`,needExtraData:!0},{additionalData:`old`,host:r.r.reddit,url:`stub`,match:/^old.reddit.com$/,selector:`.reddit-video-player-root`,needExtraData:!0,needBypassCSP:!0},{host:r.r.reddit,url:`stub`,match:/^(www.|new.)?reddit.com$/,selector:`div[slot=post-media-container]`,shadowRoot:!0,needExtraData:!0,needBypassCSP:!0},{host:r.r.kick,url:`https://kick.com/`,match:/^kick.com$/,selector:`#injected-embedded-channel-player-video > div`,needExtraData:!0},{host:r.r.appledeveloper,url:`https://developer.apple.com/`,match:/^developer.apple.com$/,selector:`.developer-video-player`,needExtraData:!0,needBypassCSP:!0},{host:r.r.epicgames,url:`https://dev.epicgames.com/community/learning/`,match:/^dev.epicgames.com$/,selector:`.vjs-v7`,needExtraData:!0},{host:r.r.odysee,url:`stub`,match:/^odysee.com$/,selector:`.vjs-v7`,needExtraData:!0},{host:r.r.coursehunterLike,url:`stub`,match:i.r,selector:`#oframeplayer > pjsdiv:has(video)`,needExtraData:!0},{host:r.r.sap,url:`https://learning.sap.com/courses/`,match:/^learning.sap.com$/,selector:`.playkit-container`,eventSelector:`.playkit-player`,needExtraData:!0,needBypassCSP:!0},{host:a.Q.udemy,url:`https://www.udemy.com/`,match:/udemy.com$/,selector:`div[data-purpose="curriculum-item-viewer-content"] > section > div > div > div > div:nth-of-type(2)`,needExtraData:!0},{host:a.Q.coursera,url:`https://www.coursera.org/`,match:/coursera.org$/,selector:`.vjs-v8`,needExtraData:!0},{host:r.r.watchpornto,url:`https://watchporn.to/`,match:/^watchporn.to$/,selector:`.fp-player`},{host:r.r.linkedin,url:`https://www.linkedin.com/learning/`,match:/^(www.)?linkedin.com$/,selector:`.vjs-v7`,needExtraData:!0,needBypassCSP:!0},{host:r.r.incestflix,url:`https://www.incestflix.net/watch/`,match:/^(www.)?incestflix.(net|to|com)$/,selector:`#incflix-stream`,needExtraData:!0},{host:r.r.porntn,url:`https://porntn.com/videos/`,match:/^porntn.com$/,selector:`.fp-player`,needExtraData:!0},{host:r.r.dzen,url:`https://dzen.ru/video/watch/`,match:/^dzen.ru$/,selector:`.zen-ui-video-video-player`},{host:r.r.cloudflarestream,url:`stub`,match:/^(watch|embed|iframe|customer-[^.]+).cloudflarestream.com$/,selector:null},{host:r.r.loom,url:`https://www.loom.com/share/`,match:/^(www.)?loom.com$/,selector:`.VideoLayersContainer`,needExtraData:!0,needBypassCSP:!0},{host:a.Q.artstation,url:`https://www.artstation.com/learning/`,match:/^(www.)?artstation.com$/,selector:`.vjs-v7`,needExtraData:!0},{host:r.r.rtnews,url:`https://www.rt.com/`,match:/^(www.)?rt.com$/,selector:`.jw-media`,needExtraData:!0},{host:r.r.bitview,url:`https://www.bitview.net/watch?v=`,match:/^(www.)?bitview.net$/,selector:`.vlScreen`,needExtraData:!0},{host:a.Q.kickstarter,url:`https://www.kickstarter.com/`,match:/^(www.)?kickstarter.com/,selector:`.ksr-video-player`,needExtraData:!0},{host:r.r.thisvid,url:`https://thisvid.com/`,match:/^(www.)?thisvid.com$/,selector:`.fp-player`},{additionalData:`regional`,host:r.r.ign,url:`https://de.ign.com/`,match:/^(\w{2}.)?ign.com$/,needExtraData:!0,selector:`.video-container`},{host:r.r.ign,url:`https://www.ign.com/`,match:/^(www.)?ign.com$/,selector:`.player`,needExtraData:!0},{host:r.r.bunkr,url:`https://bunkr.site/`,match:/^bunkr\.(site|black|cat|media|red|site|ws|org|s[kiu]|c[ir]|fi|p[hks]|ru|la|is|to|a[cx])$/,needExtraData:!0,selector:`.plyr__video-wrapper`},{host:r.r.imdb,url:`https://www.imdb.com/video/`,match:/^(www\.)?imdb\.com$/,selector:`.jw-media`},{host:r.r.telegram,url:`https://t.me/`,match:e=>/^web\.telegram\.org$/.test(e.hostname)&&e.pathname.startsWith(`/k`),selector:`.ckin__player`},{host:a.Q.oraclelearn,url:`https://mylearn.oracle.com/ou/course/`,match:/^mylearn\.oracle\.com/,selector:`.vjs-v7`,needExtraData:!0,needBypassCSP:!0},{host:a.Q.deeplearningai,url:`https://learn.deeplearning.ai/courses/`,match:/^learn(-dev|-staging)?\.deeplearning\.ai/,selector:`.lesson-video-player`,needExtraData:!0},{host:a.Q.netacad,url:`https://www.netacad.com/`,match:/^(www\.)?netacad\.com/,selector:`.vjs-v8`,needExtraData:!0},{host:r.r.custom,url:`stub`,match:e=>/([^.]+)\.(mp4|webm)/.test(e.pathname),rawResult:!0}]},"./node_modules/@vot.js/ext/dist/helpers/base.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>i,q:()=>a});var r=n(`./node_modules/@vot.js/shared/dist/utils/utils.js`);class i extends Error{constructor(e){super(e),this.name=`VideoHelper`,this.message=e}}class a{API_ORIGIN=window.location.origin;fetch;extraInfo;referer;origin;service;video;language;constructor({fetchFn:e=r.u9,extraInfo:t=!0,referer:n=document.referrer??`${window.location.origin}/`,origin:i=window.location.origin,service:a,video:o,language:s=`en`}={}){this.fetch=e,this.extraInfo=t,this.referer=n,this.origin=/^(http(s)?):\/\//.test(String(i))?i:window.location.origin,this.service=a,this.video=o,this.language=s}async getVideoData(e){}async getVideoId(e){}returnBaseData(e){if(this.service)return{url:this.service.url+e,videoId:e,host:this.service.host,duration:void 0}}}},"./node_modules/@vot.js/ext/dist/helpers/index.js":(e,t,n)=>{"use strict";n.d(t,{JW:()=>Q,Ay:()=>xe});var r=n(`./node_modules/@vot.js/core/dist/types/service.js`),i=n(`./node_modules/@vot.js/ext/dist/types/service.js`),a=n(`./node_modules/@vot.js/ext/dist/helpers/base.js`),o=n(`./node_modules/@vot.js/shared/dist/utils/logger.js`);class s extends a.q{API_ORIGIN=`https://developer.apple.com`;async getVideoData(e){try{let e=document.querySelector(`meta[property='og:video']`)?.content;if(!e)throw new a.a(`Failed to find content url`);return{url:e}}catch(t){o.A.error(`Failed to get apple developer video data by video ID: ${e}`,t.message);return}}async getVideoId(e){return/videos\/play\/([^/]+)\/([\d]+)/.exec(e.pathname)?.[0]}}class c extends a.q{async getVideoId(e){return/(details|embed)\/([^/]+)/.exec(e.pathname)?.[2]}}var l=n(`./node_modules/@vot.js/shared/dist/utils/utils.js`);class u extends a.q{API_ORIGIN=`https://www.artstation.com/api/v2/learning`;getCSRFToken(){return document.querySelector(`meta[name="public-csrf-token"]`)?.content}async getCourseInfo(e){try{let t=await this.fetch(`${this.API_ORIGIN}/courses/${e}/autoplay.json`,{method:`POST`,headers:{"PUBLIC-CSRF-TOKEN":this.getCSRFToken()}});return await t.json()}catch(t){return o.A.error(`Failed to get artstation course info by courseId: ${e}.`,t.message),!1}}async getVideoUrl(e){try{let t=await this.fetch(`${this.API_ORIGIN}/quicksilver/video_url.json?chapter_id=${e}`),n=await t.json();return n.url.replace(`qsep://`,`https://`)}catch(t){return o.A.error(`Failed to get artstation video url by chapterId: ${e}.`,t.message),!1}}async getVideoData(e){let[,t,,,n]=e.split(`/`),r=await this.getCourseInfo(t);if(!r)return;let i=r.chapters.find(e=>e.hash_id===n);if(!i)return;let a=await this.getVideoUrl(i.id);if(!a)return;let{title:o,duration:s,subtitles:c}=i,u=c.filter(e=>e.format===`vtt`).map(e=>({language:(0,l.ec)(e.locale),source:`artstation`,format:`vtt`,url:e.file_url}));return{url:a,title:o,duration:s,subtitles:u}}async getVideoId(e){return/courses\/(\w{3,5})\/([^/]+)\/chapters\/(\w{3,5})/.exec(e.pathname)?.[0]}}class d extends a.q{API_ORIGIN=`https://api.banned.video`;async getVideoInfo(e){try{let t=await this.fetch(`${this.API_ORIGIN}/graphql`,{method:`POST`,body:JSON.stringify({operationName:`GetVideo`,query:`query GetVideo($id: String!) { getVideo(id: $id) { title description: summary duration: videoDuration videoUrl: directUrl isStream: live } }`,variables:{id:e}}),headers:{"User-Agent":`bannedVideoFrontEnd`,"apollographql-client-name":`banned-web`,"apollographql-client-version":`1.3`,"content-type":`application/json`}});return await t.json()}catch(t){return console.error(`Failed to get bannedvideo video info by videoId: ${e}.`,t.message),!1}}async getVideoData(e){let t=await this.getVideoInfo(e);if(!t)return;let{videoUrl:n,duration:r,isStream:i,description:a,title:o}=t.data.getVideo;return{url:n,duration:r,isStream:i,title:o,description:a}}async getVideoId(e){return e.searchParams.get(`id`)??void 0}}class f extends a.q{async getVideoId(e){let t=/bangumi\/play\/([^/]+)/.exec(e.pathname)?.[0];if(t)return t;let n=e.searchParams.get(`bvid`);if(n)return`video/${n}`;let r=/video\/([^/]+)/.exec(e.pathname)?.[0];return r&&e.searchParams.get(`p`)!==null&&(r+=`/?p=${e.searchParams.get(`p`)}`),r}}class p extends a.q{async getVideoId(e){return/(video|embed)\/([^/]+)/.exec(e.pathname)?.[2]}}class m extends a.q{async getVideoData(e){try{let e=document.querySelector(`.vlScreen > video`)?.src;if(!e)throw new a.a(`Failed to find video URL`);return{url:e}}catch(t){o.A.error(`Failed to get Bitview data by videoId: ${e}`,t.message);return}}async getVideoId(e){return e.searchParams.get(`v`)}}class h extends a.q{async getVideoData(e){let t=document.querySelector(`#player > source[type="video/mp4"]`)?.src;if(t)return{url:t}}async getVideoId(e){return/\/f\/([^/]+)/.exec(e.pathname)?.[1]}}class g extends a.q{async getVideoId(e){return e.pathname+e.search}}class _ extends a.q{API_ORIGIN=this.origin??`https://coursehunter.net`;async getCourseId(){let e=window.course_id;return e===void 0?document.querySelector(`input[name="course_id"]`)?.value:String(e)}async getLessonsData(e){let t=window.lessons;if(t?.length)return t;try{let t=await this.fetch(`${this.API_ORIGIN}/api/v1/course/${e}/lessons`);return await t.json()}catch(t){o.A.error(`Failed to get CoursehunterLike lessons data by courseId: ${e}, because ${t.message}`);return}}getLessondId(e){let t=e.split(`?lesson=`)?.[1];if(t)return+t;let n=document.querySelector(`.lessons-item_active`);return t=n?.dataset?.index,t?+t:1}async getVideoData(e){let t=await this.getCourseId();if(!t)return;let n=await this.getLessonsData(t);if(!n)return;let r=this.getLessondId(e),i=n?.[r-1],{file:a,duration:o,title:s}=i;if(a)return{url:(0,l.fl)(a),duration:o,title:s}}async getVideoId(e){let t=/course\/([^/]+)/.exec(e.pathname)?.[0];return t?t+e.search:void 0}}class v extends a.q{SUBTITLE_SOURCE=`videojs`;SUBTITLE_FORMAT=`vtt`;static getPlayer(){return document.querySelector(`.video-js`)?.player}getVideoDataByPlayer(e){try{let t=v.getPlayer();if(!t)throw Error(`Video player doesn't have player option, videoId ${e}`);let n=t.duration(),r=Array.isArray(t.currentSources)?t.currentSources:t.getCache()?.sources,{tracks_:i}=t.textTracks(),a=r.find(e=>e.type===`video/mp4`||e.type===`video/webm`);if(!a)throw Error(`Failed to find video url for videoID ${e}`);let o=i.filter(e=>e.src&&e.kind!==`metadata`).map(e=>({language:(0,l.ec)(e.language),source:this.SUBTITLE_SOURCE,format:this.SUBTITLE_FORMAT,url:e.src}));return{url:a.src,duration:n,subtitles:o}}catch(e){o.A.error(`Failed to get videojs video data`,e.message);return}}}var y=n(`./node_modules/@vot.js/shared/dist/data/consts.js`);class b extends v{API_ORIGIN=`https://www.coursera.org/api`;SUBTITLE_SOURCE=`coursera`;async getCourseData(e){try{let t=await this.fetch(`${this.API_ORIGIN}/onDemandCourses.v1/${e}`),n=await t.json();return n?.elements?.[0]}catch(t){o.A.error(`Failed to get course data by courseId: ${e}`,t.message);return}}static getPlayer(){return v.getPlayer()}async getVideoData(e){let t=this.getVideoDataByPlayer(e);if(!t)return;let{options_:n}=b.getPlayer()??{};!t.subtitles?.length&&n&&(t.subtitles=n.tracks.map(e=>({url:e.src,language:(0,l.ec)(e.srclang),source:this.SUBTITLE_SOURCE,format:this.SUBTITLE_FORMAT})));let r=n?.courseId;if(!r)return t;let i=`en`,a=await this.getCourseData(r);if(a){let{primaryLanguageCodes:[e]}=a;i=e?(0,l.ec)(e):`en`}y.xm.includes(i)||(i=`en`);let s=t.subtitles.find(e=>e.language===i)??t.subtitles?.[0],c=s?.url;c||o.A.warn(`Failed to find any subtitle file`);let{url:u,duration:d}=t,f=c?[{target:`subtitles_file_url`,targetUrl:c},{target:`video_file_url`,targetUrl:u}]:null;return{...c?{url:this.service?.url+e,translationHelp:f}:{url:u,translationHelp:f},detectedLanguage:i,duration:d}}async getVideoId(e){let t=/learn\/([^/]+)\/lecture\/([^/]+)/.exec(e.pathname)??/lecture\/([^/]+)\/([^/]+)/.exec(e.pathname);return t?.[0]}}class x extends a.q{async getVideoId(e){let t=Array.from(document.querySelectorAll(`*`)).filter(e=>e.innerHTML.trim().includes(`.m3u8`)),n=t?.[1]?.lastChild?.src;return n?/\/video\/(\w+)\.m3u8/.exec(n)?.[1]:void 0}}class S extends a.q{async getVideoData(e){if(!this.video)return;let t=this.video.querySelector(`source[type="application/x-mpegurl"]`)?.src;if(t)return{url:t}}async getVideoId(e){return/courses\/(([^/]+)\/lesson\/([^/]+)\/([^/]+))/.exec(e.pathname)?.[1]}}class C extends a.q{static getPlayer(){if(!(typeof player>`u`))return player}async getVideoData(e){let t=C.getPlayer();if(!t)return;let{config:{url:n,duration:r,lang:i,isLive:a}}=t;if(!n)return;let o=n.find(e=>e.src.includes(`www.douyin.com/aweme/v1/play/`));if(o)return{url:(0,l.fl)(o.src),duration:r,isStream:a,...y.xm.includes(i)?{detectedLanguage:i}:{}}}async getVideoId(e){let t=/video\/([\d]+)/.exec(e.pathname)?.[0];return t||C.getPlayer()?.config.vid}}class w extends a.q{async getVideoId(e){return/video\/watch\/([^/]+)/.exec(e.pathname)?.[1]}}class T extends a.q{async getVideoId(e){return e.pathname.slice(1)}}class E extends a.q{API_ORIGIN=`https://dev.epicgames.com/community/api/learning`;async getPostInfo(e){try{let t=await this.fetch(`${this.API_ORIGIN}/post.json?hash_id=${e}`);return await t.json()}catch(t){return o.A.error(`Failed to get epicgames post info by videoId: ${e}.`,t.message),!1}}getVideoBlock(){let e=/videoUrl\s?=\s"([^"]+)"?/,t=Array.from(document.body.querySelectorAll(`script`)).find(t=>e.exec(t.innerHTML));if(!t)return;let n=t.innerHTML.trim(),r=e.exec(n)?.[1]?.replace(`qsep://`,`https://`);if(!r)return;let i=/sources\s?=\s(\[([^\]]+)\])?/.exec(n)?.[1];if(!i)return{playlistUrl:r,subtitles:[]};try{i=(i.replace(/src:(\s)+?(videoUrl)/g,`src:"removed"`).substring(0,i.lastIndexOf(`},`))+`]`).split(` `).map(e=>e.replace(/([^\s]+):\s?(?!.*\1)/,`"$1":`)).join(` `);let e=JSON.parse(i),t=e.filter(e=>e.type===`captions`);return{playlistUrl:r,subtitles:t}}catch{return{playlistUrl:r,subtitles:[]}}}async getVideoData(e){let t=e.split(`:`)?.[1],n=await this.getPostInfo(t);if(!n)return;let r=this.getVideoBlock();if(!r)return;let{playlistUrl:i,subtitles:a}=r,{title:o,description:s}=n,c=a.map(e=>({language:(0,l.ec)(e.srclang),source:`epicgames`,format:`vtt`,url:e.src}));return{url:i,title:o,description:s,subtitles:c}}async getVideoId(e){return new Promise(e=>{let t=`https://dev.epicgames.com`,n=btoa(window.location.href);window.addEventListener(`message`,n=>{if(n.origin!==t||!(typeof n.data==`string`&&n.data.startsWith(`getVideoId:`)))return;let r=n.data.replace(`getVideoId:`,``);return e(r)}),window.top.postMessage(`getVideoId:${n}`,t)})}}class D extends a.q{async getVideoId(e){return/video-([^/]+)\/([^/]+)/.exec(e.pathname)?.[0]}}class O extends a.q{async getVideoId(e){return e.pathname.slice(1)}}class k extends a.q{getPlayerData(){let e=document.querySelector(`#movie_player`);return e?.getVideoData?.call()??void 0}async getVideoId(e){return this.getPlayerData()?.video_id}}var A=n(`./node_modules/@vot.js/core/dist/utils/videoData.js`);class j extends a.q{getVideoDataBySource(e){let t=document.querySelector(`.icms.video > source[type="video/mp4"][data-quality="360"]`)?.src;return t?{url:(0,l.fl)(t)}:this.returnBaseData(e)}getVideoDataByNext(e){try{let e=document.getElementById(`__NEXT_DATA__`)?.textContent;if(!e)throw new A.A(`Not found __NEXT_DATA__ content`);let t=JSON.parse(e),{props:{pageProps:{page:{description:n,title:r,video:{videoMetadata:{duration:i},assets:a}}}}}=t,o=a.find(e=>e.height===360&&e.url.includes(`.mp4`))?.url;if(!o)throw new A.A(`Not found video URL in assets`);return{url:(0,l.fl)(o),duration:i,title:r,description:n}}catch(t){return o.A.warn(`Failed to get ign video data by video ID: ${e}, because ${t.message}. Using clear link instead...`),this.returnBaseData(e)}}async getVideoData(e){return document.getElementById(`__NEXT_DATA__`)?this.getVideoDataByNext(e):this.getVideoDataBySource(e)}async getVideoId(e){return/([^/]+)\/([\d]+)\/video\/([^/]+)/.exec(e.pathname)?.[0]??/\/videos\/([^/]+)/.exec(e.pathname)?.[0]}}class M extends a.q{async getVideoId(e){return/video\/([^/]+)/.exec(e.pathname)?.[1]}}class N extends a.q{async getVideoData(e){try{let e=document.querySelector(`#incflix-stream source:first-of-type`);if(!e)throw new a.a(`Failed to find source element`);let t=e.getAttribute(`src`);if(!t)throw new a.a(`Failed to find source link`);let n=new URL(t.startsWith(`//`)?`https:${t}`:t);return n.searchParams.append(`media-proxy`,`video.mp4`),{url:(0,l.fl)(n)}}catch(t){o.A.error(`Failed to get Incestflix data by videoId: ${e}`,t.message);return}}async getVideoId(e){return/\/watch\/([^/]+)/.exec(e.pathname)?.[1]}}class P extends a.q{API_ORIGIN=`https://kick.com/api`;async getClipInfo(e){try{let t=await this.fetch(`${this.API_ORIGIN}/v2/clips/${e}`),n=await t.json(),{clip_url:r,duration:i,title:a}=n.clip;return{url:r,duration:i,title:a}}catch(t){o.A.error(`Failed to get kick clip info by clipId: ${e}.`,t.message);return}}async getVideoInfo(e){try{let t=await this.fetch(`${this.API_ORIGIN}/v1/video/${e}`),n=await t.json(),{source:r,livestream:i}=n,{session_title:a,duration:o}=i;return{url:r,duration:Math.round(o/1e3),title:a}}catch(t){o.A.error(`Failed to get kick video info by videoId: ${e}.`,t.message);return}}async getVideoData(e){return e.startsWith(`videos`)?await this.getVideoInfo(e.replace(`videos/`,``)):await this.getClipInfo(e.replace(`clips/`,``))}async getVideoId(e){return/([^/]+)\/((videos|clips)\/([^/]+))/.exec(e.pathname)?.[2]}}class F extends a.q{async getVideoData(e){try{let e=document.querySelector(`.ksr-video-player > video`),t=e?.querySelector(`source[type^='video/mp4']`)?.src;if(!t)throw new a.a(`Failed to find video URL`);let n=e?.querySelectorAll(`track`)??[];return{url:t,subtitles:Array.from(n).reduce((e,t)=>{let n=t.getAttribute(`srclang`),r=t.getAttribute(`src`);return!n||!r||e.push({language:(0,l.ec)(n),url:r,format:`vtt`,source:`kickstarter`}),e},[])}}catch(t){o.A.error(`Failed to get Kickstarter data by videoId: ${e}`,t.message);return}}async getVideoId(e){return e.pathname.slice(1)}}var I=n(`./node_modules/@vot.js/shared/dist/data/config.js`);class L extends a.q{API_ORIGIN=window.location.origin;getSecureData(e){try{let[t,n,r]=e.split(`/`).filter(e=>e),i=Array.from(document.getElementsByTagName(`script`)),o=i.filter(e=>e.innerHTML.includes(`videoId = "${n}"`)||e.innerHTML.includes(`serialId = Number(${n})`));if(!o.length)throw new a.a(`Failed to find secure script`);let s=/'{[^']+}'/.exec(o[0].textContent.trim())?.[0];if(!s)throw new a.a(`Secure json wasn't found in secure script`);let c=JSON.parse(s.replaceAll(`'`,``));if(t!==`serial`)return{videoType:t,videoId:n,hash:r,...c};let l=i.find(e=>e.innerHTML.includes(`var videoInfo = {}`))?.textContent?.trim();if(!l)throw new a.a(`Failed to find videoInfo content`);let u=/videoInfo\.type\s+?=\s+?'([^']+)'/.exec(l)?.[1],d=/videoInfo\.id\s+?=\s+?'([^']+)'/.exec(l)?.[1],f=/videoInfo\.hash\s+?=\s+?'([^']+)'/.exec(l)?.[1];if(!u||!d||!f)throw new a.a(`Failed to parse videoInfo content`);return{videoType:u,videoId:d,hash:f,...c}}catch(t){return o.A.error(`Failed to get kodik secure data by videoPath: ${e}.`,t.message),!1}}async getFtor(e){let{videoType:t,videoId:n,hash:r,d:i,d_sign:a,pd:s,pd_sign:c,ref:l,ref_sign:u}=e;try{let e=await this.fetch(this.API_ORIGIN+`/ftor`,{method:`POST`,headers:{"User-Agent":I.A.userAgent,Origin:this.API_ORIGIN,Referer:`${this.API_ORIGIN}/${t}/${n}/${r}/360p`},body:new URLSearchParams({d:i,d_sign:a,pd:s,pd_sign:c,ref:decodeURIComponent(l),ref_sign:u,bad_user:`false`,cdn_is_working:`true`,info:`{}`,type:t,hash:r,id:n})});return await e.json()}catch(e){return o.A.error(`Failed to get kodik video data (type: ${t}, id: ${n}, hash: ${r})`,e.message),!1}}decryptUrl(e){let t=atob(e.replace(/[a-zA-Z]/g,function(e){let t=e.charCodeAt(0)+18,n=e<=`Z`?90:122;return String.fromCharCode(n>=t?t:t-26)}));return`https:`+t}async getVideoData(e){let t=this.getSecureData(e);if(!t)return;let n=await this.getFtor(t);if(!n)return;let r=Object.entries(n.links[n.default.toString()]),i=r.find(([,e])=>e.type===`application/x-mpegURL`)?.[1];if(i)return{url:i.src.startsWith(`//`)?`https:${i.src}`:this.decryptUrl(i.src)}}async getVideoId(e){return/\/(uv|video|seria|episode|season|serial)\/([^/]+)\/([^/]+)\/([\d]+)p/.exec(e.pathname)?.[0]}}class R extends v{SUBTITLE_SOURCE=`linkedin`;async getVideoData(e){let t=this.getVideoDataByPlayer(e);if(!t)return;let{url:n,duration:r,subtitles:i}=t;return{url:(0,l.fl)(new URL(n)),duration:r,subtitles:i}}async getVideoId(e){return/\/learning\/(([^/]+)\/([^/]+))/.exec(e.pathname)?.[1]}}var z=n(`./node_modules/@vot.js/shared/dist/index.js`);class B extends a.q{getClientVersion(){if(!(typeof SENTRY_RELEASE>`u`))return SENTRY_RELEASE.id}async getVideoData(e){try{let t=this.getClientVersion();if(!t)throw new a.a(`Failed to get client version`);let n=await this.fetch(`https://www.loom.com/graphql`,{headers:{"User-Agent":z.$W.userAgent,"content-type":`application/json`,"x-loom-request-source":`loom_web_${t}`,"apollographql-client-name":`web`,"apollographql-client-version":t,"Alt-Used":`www.loom.com`},body:`{"operationName":"FetchCaptions","variables":{"videoId":"${e}"},"query":"query FetchCaptions($videoId: ID!, $password: String) {\\n fetchVideoTranscript(videoId: $videoId, password: $password) {\\n ... on VideoTranscriptDetails {\\n id\\n captions_source_url\\n language\\n __typename\\n }\\n ... on GenericError {\\n message\\n __typename\\n }\\n __typename\\n }\\n}"}`,method:`POST`});if(n.status!==200)throw new a.a(`Failed to get data from graphql`);let r=await n.json(),i=r.data.fetchVideoTranscript;if(i.__typename===`GenericError`)throw new a.a(i.message);return{url:this.service.url+e,subtitles:[{format:`vtt`,language:(0,l.ec)(i.language),source:`loom`,url:i.captions_source_url}]}}catch(t){return o.A.error(`Failed to get Loom video data, because: ${t.message}`),this.returnBaseData(e)}}async getVideoId(e){return/(embed|share)\/([^/]+)?/.exec(e.pathname)?.[2]}}class V extends a.q{API_ORIGIN=`https://my.mail.ru`;async getVideoMeta(e){try{let t=await this.fetch(`${this.API_ORIGIN}/+/video/meta/${e}?xemail=&ajax_call=1&func_name=&mna=&mnb=&ext=1&_=${new Date().getTime()}`);return await t.json()}catch(e){o.A.error(`Failed to get mail.ru video data`,e.message);return}}async getVideoId(e){let t=e.pathname;if(/\/(v|mail|bk|inbox)\//.exec(t))return t.slice(1);let n=/video\/embed\/([^/]+)/.exec(t)?.[1];if(!n)return;let r=await this.getVideoMeta(n);if(r)return r.meta.url.replace(`//my.mail.ru/`,``)}}class ee extends v{SUBTITLE_SOURCE=`netacad`;async getVideoData(e){let t=this.getVideoDataByPlayer(e);if(!t)return;let{url:n,duration:r,subtitles:i}=t;return{url:(0,l.fl)(new URL(n)),duration:r,subtitles:i}}async getVideoId(e){return e.pathname+e.search}}class H extends a.q{async getVideoId(e){return/([^/]+)\/(view)\/([^/]+)/.exec(e.pathname)?.[0]}}class U extends a.q{async getVideoData(e){let t=this.returnBaseData(e);if(!t)return t;try{if(!this.video)throw Error(`Video element not found`);let e=this.video.querySelector(`source[type^="video/mp4"], source[type^="video/webm"]`)?.src;if(!e||!/^https?:\/\//.test(e))throw Error(`Video source not found`);return{...t,translationHelp:[{target:`video_file_url`,targetUrl:e}]}}catch{return t}}async getVideoId(e){return/gag\/([^/]+)/.exec(e.pathname)?.[1]}}class te extends a.q{API_ORIGIN=`https://odysee.com`;async getVideoData(e){try{let t=await this.fetch(`${this.API_ORIGIN}/${e}`),n=await t.text(),r=/"contentUrl":(\s)?"([^"]+)"/.exec(n)?.[2];if(!r)throw new a.a(`Odysee url doesn't parsed`);return{url:r}}catch(t){o.A.error(`Failed to get odysee video data by video ID: ${e}`,t.message);return}}async getVideoId(e){return e.pathname.slice(1)}}class ne extends a.q{async getVideoId(e){return/\/video\/(\d+)/.exec(e.pathname)?.[1]}}class re extends v{SUBTITLE_SOURCE=`oraclelearn`;async getVideoData(e){let t=this.getVideoDataByPlayer(e);if(!t)return;let{url:n,duration:r,subtitles:i}=t,a=this.returnBaseData(e),o=(0,l.fl)(new URL(n));return a?{url:a.url,duration:r,subtitles:i,translationHelp:[{target:`video_file_url`,targetUrl:o}]}:{url:o,duration:r,subtitles:i}}async getVideoId(e){return/\/ou\/course\/(([^/]+)\/(\d+)\/(\d+))/.exec(e.pathname)?.[1]}}class ie extends a.q{API_ORIGIN=`https://www.patreon.com/api`;async getPosts(e){try{let t=await this.fetch(`${this.API_ORIGIN}/posts/${e}?json-api-use-default-includes=false`);return await t.json()}catch(t){return o.A.error(`Failed to get patreon posts by postId: ${e}.`,t.message),!1}}async getVideoData(e){let t=await this.getPosts(e);if(!t)return;let n=t.data.attributes.post_file.url;if(n)return{url:n}}async getVideoId(e){let t=/posts\/([^/]+)/.exec(e.pathname)?.[1];if(t)return t.replace(/[^\d.]/g,``)}}class ae extends a.q{async getVideoId(e){return/\/w\/([^/]+)/.exec(e.pathname)?.[0]}}class W extends a.q{async getVideoId(e){return e.searchParams.get(`viewkey`)??/embed\/([^/]+)/.exec(e.pathname)?.[1]}}class oe extends a.q{async getVideoData(e){try{if(typeof flashvars>`u`)return;let{rnd:e,video_url:t,video_title:n}=flashvars;if(!t||!e)throw new a.a(`Failed to find video source or rnd`);let r=new URL(t);r.searchParams.append(`rnd`,e),o.A.log(`PornTN get_file link`,r.href);let i=await this.fetch(r.href,{method:`head`}),s=new URL(i.url);o.A.log(`PornTN cdn link`,s.href);let c=(0,l.fl)(s);return{url:c,title:n}}catch(t){o.A.error(`Failed to get PornTN data by videoId: ${e}`,t.message);return}}async getVideoId(e){return/\/videos\/(([^/]+)\/([^/]+))/.exec(e.pathname)?.[1]}}class G extends a.q{API_ORIGIN=`https://www.reddit.com`;async getContentUrl(e){if(this.service?.additionalData!==`old`)return document.querySelector(`shreddit-player-2`)?.src;let t=document.querySelector(`[data-hls-url]`);return t?.dataset.hlsUrl?.replaceAll(`&`,`&`)}async getVideoData(e){try{let t=await this.getContentUrl(e);if(!t)throw new a.a(`Failed to find content url`);return{url:decodeURIComponent(t)}}catch(t){o.A.error(`Failed to get reddit video data by video ID: ${e}`,t.message);return}}async getVideoId(e){return/\/r\/(([^/]+)\/([^/]+)\/([^/]+)\/([^/]+))/.exec(e.pathname)?.[1]}}class se extends a.q{async getVideoData(e){let t=document.querySelector(`.jw-video, .media__video_noscript`);if(!t)return;let n=t.getAttribute(`src`);if(n)return n.endsWith(`.MP4`)&&(n=(0,l.fl)(n)),{videoId:e,url:n}}async getVideoId(e){return e.pathname.slice(1)}}class K extends a.q{async getVideoId(e){return e.pathname.slice(1)}}class ce extends a.q{async getVideoId(e){return/(?:video|embed)\/([^/]+)/.exec(e.pathname)?.[1]}}class le extends a.q{API_ORIGIN=`https://learning.sap.com/`;async requestKaltura(e,t,n){let r=`html5:v3.17.22`,i=`3.3.0`;try{let a=await this.fetch(`https://${e}/api_v3/service/multirequest`,{method:`POST`,body:JSON.stringify({1:{service:`session`,action:`startWidgetSession`,widgetId:`_${t}`},2:{service:`baseEntry`,action:`list`,ks:`{1:result:ks}`,filter:{redirectFromEntryId:n},responseProfile:{type:1,fields:`id,referenceId,name,description,dataUrl,duration,flavorParamsIds,type,dvrStatus,externalSourceType,createdAt,updatedAt,endDate,plays,views,downloadUrl,creatorId`}},3:{service:`baseEntry`,action:`getPlaybackContext`,entryId:`{2:result:objects:0:id}`,ks:`{1:result:ks}`,contextDataParams:{objectType:`KalturaContextDataParams`,flavorTags:`all`}},apiVersion:i,format:1,ks:``,clientTag:r,partnerId:t}),headers:{"Content-Type":`application/json`}});return await a.json()}catch(e){o.A.error(`Failed to request kaltura data`,e.message);return}}async getKalturaData(e){try{let t=document.querySelector(`script[data-nscript="beforeInteractive"]`);if(!t)throw new a.a(`Failed to find script element`);let n=/https:\/\/([^"]+)\/p\/([^"]+)\/embedPlaykitJs\/uiconf_id\/([^"]+)/.exec(t?.src);if(!n)throw new a.a(`Failed to get sap data for videoId: ${e}`);let[,r,i]=n,o=document.querySelector(`#shadow`)?.firstChild?.getAttribute(`id`);if(!o){let e=document.querySelector(`#__NEXT_DATA__`);if(!e)throw new a.a(`Failed to find next data element`);o=/"sourceId":\s?"([^"]+)"/.exec(e.innerText)?.[1]}if(!r||Number.isNaN(+i)||!o)throw new a.a(`One of the necessary parameters for getting a link to a sap video in wasn't found for ${e}. Params: kalturaDomain = ${r}, partnerId = ${i}, entryId = ${o}`);return await this.requestKaltura(r,i,o)}catch(e){o.A.error(`Failed to get kaltura data`,e.message);return}}async getVideoData(e){let t=await this.getKalturaData(e);if(!t)return;let[,n,r]=t,{duration:i}=n.objects[0],a=r.sources.find(e=>e.format===`url`&&e.protocols===`http,https`&&e.url.includes(`.mp4`))?.url;if(!a)return;let o=r.playbackCaptions.map(e=>({language:(0,l.ec)(e.languageCode),source:`sap`,format:`vtt`,url:e.webVttUrl,isAutoGenerated:e.label.includes(`auto-generated`)}));return{url:a,subtitles:o,duration:i}}async getVideoId(e){return/((courses|learning-journeys)\/([^/]+)(\/[^/]+)?)/.exec(e.pathname)?.[1]}}class q extends a.q{static getMediaViewer(){if(!(typeof appMediaViewer>`u`))return appMediaViewer}async getVideoId(e){let t=q.getMediaViewer();if(!t||t.live)return;let n=t.target.message;if(n.peer_id._!==`peerChannel`)return;let r=n.media;if(r._!==`messageMediaDocument`||r.document.type!==`video`)return;let i=n.mid&4294967295,a=await t.managers.appPeersManager.getPeerUsername(n.peerId);return`${a}/${i}`}}class ue extends a.q{async getVideoId(e){return/(videos|embed)\/[^/]+/.exec(e.pathname)?.[0]}}class J extends a.q{async getVideoId(e){return/([^/]+)\/video\/([^/]+)/.exec(e.pathname)?.[0]}}class Y extends a.q{async getVideoId(e){let t=e.searchParams.get(`vid`),n=/([^/]+)\/([\d]+)/.exec(e.pathname)?.[0];if(!(!t||!n))return`${n}?vid=${t}`}}class de extends a.q{API_ORIGIN=`https://clips.twitch.tv`;async getClipLink(e,t){let n=document.querySelector(`script[type='application/ld+json']`),r=e.slice(1);if(n){let e=JSON.parse(n.innerText),t=e[`@graph`].find(e=>e[`@type`]===`VideoObject`)?.creator.url;if(!t)throw new a.a(`Failed to find channel link`);let i=t.replace(`https://www.twitch.tv/`,``);return`${i}/clip/${r}`}let i=r===`embed`,o=document.querySelector(i?`.tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']`:`.clips-player a:not([class])`);if(!o)return;let s=o.href.replace(`https://www.twitch.tv/`,``);return`${s}/clip/${i?t:r}`}async getVideoData(e){let t=document.querySelector(`[data-a-target="stream-title"], [data-test-selector="stream-info-card-component__subtitle"]`)?.innerText,n=!!document.querySelector(`[data-a-target="animated-channel-viewers-count"], .channel-status-info--live, .top-bar--pointer-enabled .tw-channel-status-text-indicator`);return{url:this.service.url+e,isStream:n,title:t}}async getVideoId(e){let t=e.pathname;if(/^m\.twitch\.tv$/.test(t))return/videos\/([^/]+)/.exec(e.href)?.[0]??t.slice(1);if(/^player\.twitch\.tv$/.test(e.hostname))return`videos/${e.searchParams.get(`video`)}`;let n=/([^/]+)\/(?:clip)\/([^/]+)/.exec(t);if(n)return n[0];let r=/^clips\.twitch\.tv$/.test(e.hostname);if(r)return await this.getClipLink(t,e.searchParams.get(`clip`));let i=/(?:videos)\/([^/]+)/.exec(t);if(i)return i[0];let a=document.querySelector(`.home-offline-hero .tw-link`);if(a?.href){let e=new URL(a.href);return/(?:videos)\/([^/]+)/.exec(e.pathname)?.[0]}return document.querySelector(`.persistent-player`)?t:void 0}}class fe extends a.q{async getVideoId(e){let t=/status\/([^/]+)/.exec(e.pathname)?.[1];if(t)return t;let n=this.video?.closest(`[data-testid="tweet"]`),r=n?.querySelector(`a[role="link"][aria-label]`)?.href;return r?/status\/([^/]+)/.exec(r)?.[1]:void 0}}class pe extends a.q{API_ORIGIN=`https://www.udemy.com/api-2.0`;getModuleData(){let e=document.querySelector(`.ud-app-loader[data-module-id='course-taking']`),t=e?.dataset?.moduleArgs;if(t)return JSON.parse(t)}getLectureId(){return/learn\/lecture\/([^/]+)/.exec(window.location.pathname)?.[1]}isErrorData(e){return Object.hasOwn(e,`error`)}async getLectureData(e,t){try{let n=await this.fetch(`${this.API_ORIGIN}/users/me/subscribed-courses/${e}/lectures/${t}/?`+new URLSearchParams({"fields[lecture]":`title,description,asset`,"fields[asset]":`length,media_sources,captions`}).toString()),r=await n.json();if(this.isErrorData(r))throw new a.a(r.detail??`unknown error`);return r}catch(n){o.A.error(`Failed to get lecture data by courseId: ${e} and lectureId: ${t}`,n.message);return}}async getCourseLang(e){try{let t=await this.fetch(`${this.API_ORIGIN}/users/me/subscribed-courses/${e}?`+new URLSearchParams({"fields[course]":`locale`}).toString()),n=await t.json();if(this.isErrorData(n))throw new a.a(n.detail??`unknown error`);return n}catch(t){o.A.error(`Failed to get course lang by courseId: ${e}`,t.message);return}}findVideoUrl(e){return e?.find(e=>e.type===`video/mp4`)?.src}findSubtitleUrl(e,t){let n=e?.find(e=>(0,l.ec)(e.locale_id)===t)??e?.find(e=>(0,l.ec)(e.locale_id)===`en`)??e?.[0];return n?.url}async getVideoData(e){let t=this.getModuleData();if(!t)return;let{courseId:n}=t,r=this.getLectureId();if(o.A.log(`[Udemy] courseId: ${n}, lectureId: ${r}`),!r)return;let i=await this.getLectureData(n,r);if(!i)return;let{title:a,description:s,asset:c}=i,{length:u,media_sources:d,captions:f}=c,p=this.findVideoUrl(d);if(!p){o.A.log(`Failed to find .mp4 video file in media_sources`,d);return}let m=`en`,h=await this.getCourseLang(n);if(h){let{locale:{locale:e}}=h;m=e?(0,l.ec)(e):m}y.xm.includes(m)||(m=`en`);let g=this.findSubtitleUrl(f,m);return g||o.A.log(`Failed to find subtitle file in captions`,f),{...g?{url:this.service?.url+e,translationHelp:[{target:`subtitles_file_url`,targetUrl:g},{target:`video_file_url`,targetUrl:p}],detectedLanguage:m}:{url:p,translationHelp:null},duration:u,title:a,description:s}}async getVideoId(e){return e.pathname.slice(1)}}class me extends a.q{API_KEY=``;DEFAULT_SITE_ORIGIN=`https://vimeo.com`;SITE_ORIGIN=this.service?.url?.slice(0,-1)??this.DEFAULT_SITE_ORIGIN;isErrorData(e){return Object.hasOwn(e,`error`)}isPrivatePlayer(){return this.referer&&!this.referer.includes(`vimeo.com`)&&this.origin.endsWith(`player.vimeo.com`)}async getViewerData(){try{let e=await this.fetch(`https://vimeo.com/_next/viewer`),t=await e.json(),{apiUrl:n,jwt:r}=t;return this.API_ORIGIN=`https://${n}`,this.API_KEY=`jwt ${r}`,t}catch(e){return o.A.error(`Failed to get default viewer data.`,e.message),!1}}async getVideoInfo(e){try{let t=new URLSearchParams({fields:`name,link,description,duration`}).toString(),n=await this.fetch(`${this.API_ORIGIN}/videos/${e}?${t}`,{headers:{Authorization:this.API_KEY}}),r=await n.json();if(this.isErrorData(r))throw Error(r.developer_message??r.error);return r}catch(t){return o.A.error(`Failed to get video info by video ID: ${e}`,t.message),!1}}async getPrivateVideoSource(e){try{let{default_cdn:t,cdns:n}=e.dash,r=n[t].url,i=await this.fetch(r);if(i.status!==200)throw new a.a(await i.text());let o=await i.json(),s=new URL(o.base_url,r),c=o.audio.find(e=>e.mime_type===`audio/mp4`&&e.format===`dash`);if(!c)throw new a.a(`Failed to find video data`);let l=c.segments?.[0]?.url;if(!l)throw new a.a(`Failed to find first segment url`);let[u,d]=l.split(`?`,2),f=new URLSearchParams(d);return f.delete(`range`),new URL(`${c.base_url}${u}?${f.toString()}`,s).href}catch(e){return o.A.error(`Failed to get private video source`,e.message),!1}}async getPrivateVideoInfo(e){try{if(typeof playerConfig>`u`)return;let t=await this.getPrivateVideoSource(playerConfig.request.files);if(!t)throw new a.a(`Failed to get private video source`);let{video:{title:n,duration:r},request:{text_tracks:i}}=playerConfig;return{url:`${this.SITE_ORIGIN}/${e}`,video_url:t,title:n,duration:r,subs:i}}catch(t){return o.A.error(`Failed to get private video info by video ID: ${e}`,t.message),!1}}async getSubsInfo(e){try{let t=new URLSearchParams({per_page:`100`,fields:`language,type,link`}).toString(),n=await this.fetch(`${this.API_ORIGIN}/videos/${e}/texttracks?${t}`,{headers:{Authorization:this.API_KEY}}),r=await n.json();if(this.isErrorData(r))throw Error(r.developer_message??r.error);return r.data}catch(t){return o.A.error(`Failed to get subtitles info by video ID: ${e}`,t.message),[]}}async getVideoData(e){let t=this.isPrivatePlayer();if(t){let t=await this.getPrivateVideoInfo(e);if(!t)return;let{url:n,subs:r,video_url:i,title:a,duration:o}=t,s=r.map(e=>({language:(0,l.ec)(e.lang),source:`vimeo`,format:`vtt`,url:this.SITE_ORIGIN+e.url,isAutoGenerated:e.lang.includes(`autogenerated`)})),c=s.length?[{target:`video_file_url`,targetUrl:i},{target:`subtitles_file_url`,targetUrl:s[0].url}]:null;return{...c?{url:n,translationHelp:c}:{url:i},subtitles:s,title:a,duration:o}}if(!this.extraInfo)return this.returnBaseData(e);e.includes(`/`)&&(e=e.replace(`/`,`:`));let n=await this.getViewerData();if(!n)return this.returnBaseData(e);let r=await this.getVideoInfo(e);if(!r)return this.returnBaseData(e);let i=await this.getSubsInfo(e),a=i.map(e=>({language:(0,l.ec)(e.language),source:`vimeo`,format:`vtt`,url:e.link,isAutoGenerated:e.language.includes(`autogen`)})),{link:o,duration:s,name:c,description:u}=r;return{url:o,title:c,description:u,subtitles:a,duration:s}}async getVideoId(e){let t=/video\/[^/]+$/.exec(e.pathname)?.[0];if(this.isPrivatePlayer())return t;if(t){let n=e.searchParams.get(`h`),r=t.replace(`video/`,``);return n?`${r}/${n}`:r}let n=/channels\/[^/]+\/([^/]+)/.exec(e.pathname)?.[1]??/groups\/[^/]+\/videos\/([^/]+)/.exec(e.pathname)?.[1]??/(showcase|album)\/[^/]+\/video\/([^/]+)/.exec(e.pathname)?.[2];return n||/([^/]+\/)?[^/]+$/.exec(e.pathname)?.[0]}}class he extends a.q{static getPlayer(){if(!(typeof Videoview>`u`))return Videoview?.getPlayerObject?.call(void 0)}async getVideoData(e){let t=he.getPlayer();if(!t)return this.returnBaseData(e);try{let{description:n,duration:r,md_title:i}=t.vars,a=new DOMParser,o=a.parseFromString(n,`text/html`),s=Array.from(o.body.childNodes).filter(e=>e.nodeName!==`BR`).map(e=>e.textContent).join(` `),c;return Object.hasOwn(t.vars,`subs`)&&(c=t.vars.subs.map(e=>({language:(0,l.ec)(e.lang),source:`vk`,format:`vtt`,url:e.url,isAutoGenerated:!!e.is_auto}))),{url:this.service.url+e,title:i,description:s,duration:r,subtitles:c}}catch(t){return o.A.error(`Failed to get VK video data, because: ${t.message}`),this.returnBaseData(e)}}async getVideoId(e){let t=/^\/(video|clip)-?\d{8,9}_\d{9}$/.exec(e.pathname);if(t)return t[0].slice(1);let n=/\/playlist\/[^/]+\/(video-?\d{8,9}_\d{9})/.exec(e.pathname);if(n)return n[1];let r=e.searchParams.get(`z`);if(r)return r.split(`/`)[0];let i=e.searchParams.get(`oid`),a=e.searchParams.get(`id`);if(i&&a)return`video-${Math.abs(parseInt(i))}_${a}`}}class X extends a.q{async getVideoId(e){return/(video|embed)\/(\d+)(\/[^/]+\/)?/.exec(e.pathname)?.[0]}}var ge=n(`./node_modules/@vot.js/shared/dist/secure.js`);class _e extends a.q{API_ORIGIN=`https://global.apis.naver.com/weverse/wevweb`;API_APP_ID=`be4d79eb8fc7bd008ee82c8ec4ff6fd4`;API_HMAC_KEY=`1b9cb6378d959b45714bec49971ade22e6e24e42`;HEADERS={Accept:`application/json, text/plain, */*`,Origin:`https://weverse.io`,Referer:`https://weverse.io/`};getURLData(){return{appId:this.API_APP_ID,language:`en`,os:`WEB`,platform:`WEB`,wpf:`pc`}}async createHash(e){let t=Date.now(),n=e.substring(0,Math.min(255,e.length))+t,r=await(0,ge.bT)(this.API_HMAC_KEY,n);if(!r)throw new a.a(`Failed to get weverse HMAC signature`);return{wmsgpad:t.toString(),wmd:r}}async getHashURLParams(e){let t=await this.createHash(e);return new URLSearchParams(t).toString()}async getPostPreview(e){let t=`/post/v1.0/post-${e}/preview?`+new URLSearchParams({fieldSet:`postForPreview`,...this.getURLData()}).toString();try{let e=await this.getHashURLParams(t),n=await this.fetch(this.API_ORIGIN+t+`&`+e,{headers:this.HEADERS});return await n.json()}catch(t){return o.A.error(`Failed to get weverse post preview by postId: ${e}`,t.message),!1}}async getVideoInKey(e){let t=`/video/v1.1/vod/${e}/inKey?`+new URLSearchParams({gcc:`RU`,...this.getURLData()}).toString();try{let e=await this.getHashURLParams(t),n=await this.fetch(this.API_ORIGIN+t+`&`+e,{method:`POST`,headers:this.HEADERS});return await n.json()}catch(t){return o.A.error(`Failed to get weverse InKey by videoId: ${e}`,t.message),!1}}async getVideoInfo(e,t,n){let r=Date.now();try{let i=new URLSearchParams({key:t,sid:n,nonce:r.toString(),devt:`html5_pc`,prv:`N`,aup:`N`,stpb:`N`,cpl:`en`,env:`prod`,lc:`en`,adi:JSON.stringify([{adSystem:null}]),adu:`/`}).toString(),a=await this.fetch(`https://global.apis.naver.com/rmcnmv/rmcnmv/vod/play/v2.0/${e}?`+i,{headers:this.HEADERS});return await a.json()}catch(r){return o.A.error(`Failed to get weverse video info (infraVideoId: ${e}, inkey: ${t}, serviceId: ${n}`,r.message),!1}}extractVideoInfo(e){return e.find(e=>e.useP2P===!1&&e.source.includes(`.mp4`))}async getVideoData(e){let t=await this.getPostPreview(e);if(!t)return;let{videoId:n,serviceId:r,infraVideoId:i}=t.extension.video;if(!(n&&r&&i))return;let a=await this.getVideoInKey(n);if(!a)return;let o=await this.getVideoInfo(i,a.inKey,r);if(!o)return;let s=this.extractVideoInfo(o.videos.list);if(s)return{url:s.source,duration:s.duration}}async getVideoId(e){return/([^/]+)\/(live|media)\/([^/]+)/.exec(e.pathname)?.[3]}}class ve extends a.q{async getVideoId(e){return/[^/]+\/[^/]+$/.exec(e.pathname)?.[0]}}class ye extends a.q{API_ORIGIN=window.location.origin;CLIENT_PREFIX=`/client/disk`;INLINE_PREFIX=`/i/`;DISK_PREFIX=`/d/`;isErrorData(e){return Object.hasOwn(e,`error`)}async getClientVideoData(e){let t=new URL(window.location.href),n=t.searchParams.get(`idDialog`);if(!n)return;let r=document.querySelector(`#preloaded-data`);if(r)try{let e=JSON.parse(r.innerText),{idClient:t,sk:i}=e.config,o=await this.fetch(this.API_ORIGIN+`/models-v2?m=mpfs/info`,{method:`POST`,body:JSON.stringify({apiMethod:`mpfs/info`,connection_id:t,requestParams:{path:n},sk:i}),headers:{"Content-Type":`application/json`}}),s=await o.json();if(this.isErrorData(s))throw new a.a(s.error?.message??s.error?.code);if(s?.type!==`file`)throw new a.a(`Failed to get resource info`);let{meta:{short_url:c,video_info:l},name:u}=s;if(!l)throw new a.a(`There's no video open right now`);if(!c)throw new a.a(`Access to the video is limited`);let d=this.clearTitle(u),f=Math.round(l.duration/1e3);return{url:c,title:d,duration:f}}catch(t){o.A.error(`Failed to get yandex disk video data by video ID: ${e}, because ${t.message}`);return}}clearTitle(e){return e.replace(/(\.[^.]+)$/,``)}getBodyHash(e,t){let n=JSON.stringify({hash:e,sk:t});return encodeURIComponent(n)}async fetchList(e,t){let n=this.getBodyHash(e,t),r=await this.fetch(this.API_ORIGIN+`/public/api/fetch-list`,{method:`POST`,body:n}),i=await r.json();if(Object.hasOwn(i,`error`))throw new a.a(`Failed to fetch folder list`);return i.resources}async getDownloadUrl(e,t){let n=this.getBodyHash(e,t),r=await this.fetch(this.API_ORIGIN+`/public/api/download-url`,{method:`POST`,body:n}),i=await r.json();if(i.error)throw new a.a(`Failed to get download url`);return i.data.url}async getDiskVideoData(e){try{let t=document.getElementById(`store-prefetch`);if(!t)throw new a.a(`Failed to get prefetch data`);let n=e.split(`/`).slice(3);if(!n.length)throw new a.a(`Failed to find video file path`);let r=JSON.parse(t.innerText),{resources:i,rootResourceId:o,environment:{sk:s}}=r,c=i[o],u=n.length-1,d=n.filter((e,t)=>t!==u).join(`/`),f=Object.values(i);d.includes(`/`)&&(f=await this.fetchList(`${c.hash}:/${d}`,s));let p=f.find(e=>e.name===n[u]);if(!p)throw new a.a(`Failed to find resource`);if(p&&p.type===`dir`)throw new a.a(`Path is dir, but expected file`);let{meta:{short_url:m,mediatype:h,videoDuration:g},path:_,name:v}=p;if(h!==`video`)throw new a.a(`Resource isn't a video`);let y=this.clearTitle(v),b=Math.round(g/1e3);if(m)return{url:m,duration:b,title:y};let x=await this.getDownloadUrl(_,s);return{url:(0,l.fl)(new URL(x)),duration:b,title:y}}catch(t){o.A.error(`Failed to get yandex disk video data by disk video ID: ${e}`,t.message);return}}async getVideoData(e){return e.startsWith(this.INLINE_PREFIX)||/^\/d\/([^/]+)$/.exec(e)?{url:this.service.url+e.slice(1)}:(e=decodeURIComponent(e),e.startsWith(this.CLIENT_PREFIX)?await this.getClientVideoData(e):await this.getDiskVideoData(e))}async getVideoId(e){if(e.pathname.startsWith(this.CLIENT_PREFIX))return e.pathname+e.search;let t=/\/i\/([^/]+)/.exec(e.pathname)?.[0];return t||(/\/d\/([^/]+)/.exec(e.pathname)?e.pathname:void 0)}}class be extends a.q{async getVideoId(e){return/v_show\/id_[\w=]+/.exec(e.pathname)?.[0]}}var Z=n(`./node_modules/@vot.js/ext/dist/helpers/youtube.js`);let Q={[r.r.mailru]:V,[r.r.weverse]:_e,[r.r.kodik]:L,[r.r.patreon]:ie,[r.r.reddit]:G,[r.r.bannedvideo]:d,[r.r.kick]:P,[r.r.appledeveloper]:s,[r.r.epicgames]:E,[r.r.odysee]:te,[r.r.coursehunterLike]:_,[r.r.twitch]:de,[r.r.sap]:le,[r.r.linkedin]:R,[r.r.vimeo]:me,[r.r.yandexdisk]:ye,[r.r.vk]:he,[r.r.trovo]:Y,[r.r.incestflix]:N,[r.r.porntn]:oe,[r.r.googledrive]:k,[r.r.bilibili]:f,[r.r.xvideos]:ve,[r.r.watchpornto]:X,[r.r.archive]:c,[r.r.dailymotion]:x,[r.r.youku]:be,[r.r.egghead]:T,[r.r.newgrounds]:H,[r.r.okru]:ne,[r.r.peertube]:ae,[r.r.eporner]:D,[r.r.bitchute]:p,[r.r.rutube]:ce,[r.r.facebook]:O,[r.r.rumble]:K,[r.r.twitter]:fe,[r.r.pornhub]:W,[r.r.tiktok]:J,[r.r.proxitok]:J,[r.r.nine_gag]:U,[r.r.youtube]:Z.A,[r.r.ricktube]:Z.A,[r.r.invidious]:Z.A,[r.r.poketube]:Z.A,[r.r.piped]:Z.A,[r.r.dzen]:w,[r.r.cloudflarestream]:g,[r.r.loom]:B,[r.r.rtnews]:se,[r.r.bitview]:m,[r.r.thisvid]:ue,[r.r.ign]:j,[r.r.bunkr]:h,[r.r.imdb]:M,[r.r.telegram]:q,[i.Q.udemy]:pe,[i.Q.coursera]:b,[i.Q.douyin]:C,[i.Q.artstation]:u,[i.Q.kickstarter]:F,[i.Q.oraclelearn]:re,[i.Q.deeplearningai]:S,[i.Q.netacad]:ee};class xe{helpersData;constructor(e={}){this.helpersData=e}getHelper(e){return new Q[e](this.helpersData)}}},"./node_modules/@vot.js/ext/dist/helpers/youtube.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(`./node_modules/@vot.js/ext/dist/helpers/base.js`),i=n(`./node_modules/@vot.js/shared/dist/data/consts.js`),a=n(`./node_modules/@vot.js/shared/dist/utils/logger.js`),o=n(`./node_modules/@vot.js/shared/dist/utils/utils.js`);class s extends r.q{static isMobile(){return/^m\.youtube\.com$/.test(window.location.hostname)}static getPlayer(){return window.location.pathname.startsWith(`/shorts/`)&&!s.isMobile()?document.querySelector(`#shorts-player`):document.querySelector(`#movie_player`)}static getPlayerResponse(){return s.getPlayer()?.getPlayerResponse?.call(void 0)}static getPlayerData(){return s.getPlayer()?.getVideoData?.call(void 0)}static getVolume(){let e=s.getPlayer();return e?.getVolume?e.getVolume()/100:1}static setVolume(e){let t=s.getPlayer();return t?.setVolume?(t.setVolume(Math.round(e*100)),!0):!1}static isMuted(){let e=s.getPlayer();return e?.isMuted?e.isMuted():!1}static videoSeek(e,t){a.A.log(`videoSeek`,t);let n=s.getPlayer()?.getProgressState()?.seekableEnd??e.currentTime,r=n-t;e.currentTime=r}static getPoToken(){let e=s.getPlayer();if(!e)return;let t=e.getAudioTrack?.call(void 0);if(!t?.captionTracks?.length)return;let n=t.captionTracks.find(e=>e.url.includes(`&pot=`));if(n)return/&pot=([^&]+)/.exec(n.url)?.[1]}static getGlobalConfig(){return typeof yt<`u`?yt?.config_:typeof ytcfg<`u`?ytcfg?.data_:void 0}static getDeviceParams(){let e=s.getGlobalConfig();if(!e)return`c=WEB`;let t=e.INNERTUBE_CONTEXT?.client,n=new URLSearchParams(e.DEVICE);return n.delete(`ceng`),n.delete(`cengver`),n.set(`c`,t?.clientName??e.INNERTUBE_CLIENT_NAME),n.set(`cver`,t?.clientVersion??e.INNERTUBE_CLIENT_VERSION),n.set(`cplayer`,`UNIPLAYER`),n.toString()}static getSubtitles(e){let t=s.getPlayerResponse(),n=t?.captions?.playerCaptionsTracklistRenderer;if(!n)return[];let r=n.captionTracks??[],i=n.translationLanguages??[],c=i.find(t=>t.languageCode===e),l=r.find(e=>e?.kind===`asr`),u=l?.languageCode??`en`,d=r.reduce((t,n)=>{if(!(`languageCode`in n))return t;let r=n.languageCode?(0,o.ec)(n.languageCode):void 0,i=n.baseUrl;if(!r||!i)return t;let a=`${i.startsWith(`http`)?i:`${window.location.origin}/${i}`}&fmt=json3`;return t.push({source:`youtube`,format:`json`,language:r,isAutoGenerated:n?.kind===`asr`,url:a}),c&&n.isTranslatable&&n.languageCode===u&&e!==r&&t.push({source:`youtube`,format:`json`,language:e,isAutoGenerated:n?.kind===`asr`,translatedFromLanguage:r,url:`${a}&tlang=${e}`}),t},[]);return a.A.log(`youtube subtitles:`,d),d}static getLanguage(){if(!s.isMobile()){let e=s.getPlayer(),t=e?.getAudioTrack?.call(void 0)?.getLanguageInfo();if(t&&t.id!==`und`)return(0,o.ec)(t.id.split(`.`)[0])}let e=s.getPlayerResponse(),t=e?.captions?.playerCaptionsTracklistRenderer.captionTracks.find(e=>e.kind===`asr`&&e.languageCode);return t?(0,o.ec)(t.languageCode):void 0}async getVideoData(e){let{title:t}=s.getPlayerData()??{},{shortDescription:n,isLive:r,title:a}=s.getPlayerResponse()?.videoDetails??{},o=s.getSubtitles(this.language),c=s.getLanguage();c&&!i.xm.includes(c)&&(c=void 0);let l=s.getPlayer()?.getDuration?.call(void 0)??void 0;return{url:this.service.url+e,isStream:r,title:a,localizedTitle:t,detectedLanguage:c,description:n,subtitles:o,duration:l}}async getVideoId(e){if(e.hostname===`youtu.be`&&(e.search=`?v=${e.pathname.replace(`/`,``)}`,e.pathname=`/watch`),e.searchParams.has(`enablejsapi`)){let t=s.getPlayer()?.getVideoUrl();e=t?new URL(t):e}return/(?:watch|embed|shorts|live)\/([^/]+)/.exec(e.pathname)?.[1]??e.searchParams.get(`v`)}}},"./node_modules/@vot.js/ext/dist/index.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{Ay:()=>i.A,Pu:()=>i.P});var i=n(`./node_modules/@vot.js/ext/dist/client.js`),a=n(`./node_modules/@vot.js/ext/dist/utils/videoData.js`),o=n(`./node_modules/@vot.js/ext/dist/data/sites.js`),s=n(`./node_modules/@vot.js/ext/dist/types/index.js`),c=n(`./node_modules/@vot.js/ext/dist/helpers/index.js`),l=e([i]);i=(l.then?(await l)():l)[0],r()}catch(e){r(e)}})},"./node_modules/@vot.js/ext/dist/types/index.js":(e,t,n)=>{"use strict";var r=n(`./node_modules/@vot.js/ext/dist/types/service.js`)},"./node_modules/@vot.js/ext/dist/types/service.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>i});var r=n(`./node_modules/@vot.js/core/dist/types/service.js`),i;(function(e){e.udemy=`udemy`,e.coursera=`coursera`,e.douyin=`douyin`,e.artstation=`artstation`,e.kickstarter=`kickstarter`,e.oraclelearn=`oraclelearn`,e.deeplearningai=`deeplearningai`,e.netacad=`netacad`})(i||={});let a={...r.r,...i}},"./node_modules/@vot.js/ext/dist/utils/videoData.js":(e,t,n)=>{"use strict";n.d(t,{cQ:()=>s,jY:()=>c,o4:()=>l});var r=n(`./node_modules/@vot.js/core/dist/types/service.js`),i=n(`./node_modules/@vot.js/core/dist/utils/videoData.js`),a=n(`./node_modules/@vot.js/ext/dist/data/sites.js`),o=n(`./node_modules/@vot.js/ext/dist/helpers/index.js`);function s(){if(i.$.exec(window.location.href))return[];let e=window.location.hostname,t=new URL(window.location.href),n=n=>n instanceof RegExp?n.test(e):typeof n==`string`?e.includes(n):typeof n==`function`?n(t):!1;return a.A.filter(e=>(Array.isArray(e.match)?e.match.some(n):n(e.match))&&e.host&&e.url)}async function c(e,t={}){let n=new URL(window.location.href),i=e.host;if(Object.keys(o.JW).includes(i)){let e=new o.Ay(t).getHelper(i);return await e.getVideoId(n)}return i===r.r.custom?n.href:void 0}async function l(e,t={}){let n=await c(e,t);if(!n)throw new i.A(`Entered unsupported link: "${e.host}"`);let a=window.location.origin;if([r.r.peertube,r.r.coursehunterLike,r.r.cloudflarestream].includes(e.host)&&(e.url=a),e.rawResult)return{url:n,videoId:n,host:e.host,duration:void 0};if(!e.needExtraData)return{url:e.url+n,videoId:n,host:e.host,duration:void 0};let s=new o.Ay({...t,service:e,origin:a}).getHelper(e.host),l=await s.getVideoData(n);if(!l)throw new i.A(`Failed to get video raw url for ${e.host}`);return{...l,videoId:n,host:e.host}}},"./node_modules/@vot.js/shared/dist/data/alternativeUrls.js":(e,t,n)=>{"use strict";n.d(t,{Jo:()=>i,My:()=>c,TP:()=>a,Xm:()=>r,fV:()=>o,r:()=>u,sx:()=>s});let r=[`yewtu.be`,`yt.artemislena.eu`,`invidious.flokinet.to`,`iv.melmac.space`,`inv.nadeko.net`,`inv.tux.pizza`,`invidious.private.coffee`,`yt.drgnz.club`,`vid.puffyan.us`,`invidious.dhusch.de`],i=`piped.video,piped.tokhmi.xyz,piped.moomoo.me,piped.syncpundit.io,piped.mha.fi,watch.whatever.social,piped.garudalinux.org,efy.piped.pages.dev,watch.leptons.xyz,piped.lunar.icu,yt.dc09.ru,piped.mint.lgbt,il.ax,piped.privacy.com.de,piped.esmailelbob.xyz,piped.projectsegfau.lt,piped.in.projectsegfau.lt,piped.us.projectsegfau.lt,piped.privacydev.net,piped.palveluntarjoaja.eu,piped.smnz.de,piped.adminforge.de,piped.qdi.fi,piped.hostux.net,piped.chauvet.pro,piped.jotoma.de,piped.pfcd.me,piped.frontendfriendly.xyz`.split(`,`),a=[`proxitok.pabloferreiro.es`,`proxitok.pussthecat.org`,`tok.habedieeh.re`,`proxitok.esmailelbob.xyz`,`proxitok.privacydev.net`,`tok.artemislena.eu`,`tok.adminforge.de`,`tt.vern.cc`,`cringe.whatever.social`,`proxitok.lunar.icu`,`proxitok.privacy.com.de`],o=[`peertube.1312.media`,`tube.shanti.cafe`,`bee-tube.fr`,`video.sadmin.io`,`dalek.zone`,`review.peertube.biz`,`peervideo.club`,`tube.la-dina.net`,`peertube.tmp.rcp.tf`,`peertube.su`,`video.blender.org`,`videos.viorsan.com`,`tube-sciences-technologies.apps.education.fr`,`tube-numerique-educatif.apps.education.fr`,`tube-arts-lettres-sciences-humaines.apps.education.fr`,`beetoons.tv`,`comics.peertube.biz`,`makertube.net`],s=[`poketube.fun`,`pt.sudovanilla.org`,`poke.ggtyler.dev`,`poke.uk2.littlekai.co.uk`,`poke.blahai.gay`],c=[`ricktube.ru`],l=null,u=[`coursehunter.net`,`coursetrain.net`]},"./node_modules/@vot.js/shared/dist/data/config.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r={host:`api.browser.yandex.ru`,hostVOT:`vot.toil.cc/v1`,hostWorker:`vot-worker.toil.cc`,mediaProxy:`media-proxy.toil.cc`,userAgent:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 YaBrowser/25.4.0.0 Safari/537.36`,componentVersion:`25.6.0.2259`,hmac:`bt8xH3VOlb4mqf0nqAibnDOoiPlXsisf`,defaultDuration:343,minChunkSize:5295308,loggerLevel:1,version:`2.4.12`}},"./node_modules/@vot.js/shared/dist/data/consts.js":(e,t,n)=>{"use strict";n.d(t,{EG:()=>a,Xh:()=>i,xm:()=>r});let r=[`auto`,`ru`,`en`,`zh`,`ko`,`lt`,`lv`,`ar`,`fr`,`it`,`es`,`de`,`ja`],i=[`ru`,`en`,`kk`],a=[`srt`,`vtt`,`json`]},"./node_modules/@vot.js/shared/dist/index.js":(e,t,n)=>{"use strict";n.d(t,{$W:()=>r.A});var r=n(`./node_modules/@vot.js/shared/dist/data/config.js`),i=n(`./node_modules/@vot.js/shared/dist/protos/yandex.js`),a=n(`./node_modules/@vot.js/shared/dist/utils/logger.js`),o=n(`./node_modules/@vot.js/shared/dist/utils/utils.js`),s=n(`./node_modules/@vot.js/shared/dist/types/logger.js`),c;(function(e){e.Channel=`Channel`,e.Video=`Video`})(c||={})},"./node_modules/@vot.js/shared/dist/protos/yandex.js":(e,t,n)=>{"use strict";n.d(t,{q8:()=>P,kO:()=>Z,Xv:()=>_e,n_:()=>ye,P4:()=>fe,LD:()=>me,Y7:()=>le,Wi:()=>ue,Yx:()=>ne,ZK:()=>ie,yy:()=>B,AJ:()=>ee,ls:()=>xe,Bv:()=>Ce});function r(){let e=0,t=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<>4,!(n&128))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(t|=(r&127)<>>r,a=!(!(i>>>7)&&t==0),o=(a?i|128:i)&255;if(n.push(o),!a)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),i){for(let e=3;e<31;e+=7){let r=t>>>e,i=!!(r>>>7),a=(i?r|128:r)&255;if(n.push(a),!i)return}n.push(t>>>31&1)}}let a=4294967296;function o(e){let t=e[0]===`-`;t&&(e=e.slice(1));let n=1e6,r=0,i=0;function o(t,o){let s=Number(e.slice(t,o));i*=n,r=r*n+s,r>=a&&(i+=r/a|0,r%=a)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),t?d(r,i):u(r,i)}function s(e,t){let n=u(e,t),r=n.hi&2147483648;r&&(n=d(n.lo,n.hi));let i=c(n.lo,n.hi);return r?`-`+i:i}function c(e,t){if({lo:e,hi:t}=l(e,t),t<=2097151)return String(a*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,o=n+r*6777216+i*6710656,s=r+i*8147497,c=i*2,u=1e7;return o>=u&&(s+=Math.floor(o/u),o%=u),s>=u&&(c+=Math.floor(s/u),s%=u),c.toString()+f(s)+f(o)}function l(e,t){return{lo:e>>>0,hi:t>>>0}}function u(e,t){return{lo:e|0,hi:t|0}}function d(e,t){return t=~t,e?e=~e+1:t+=1,u(e,t)}let f=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function p(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e>>=7;t.push(1)}}function m(){let e=this.buf[this.pos++],t=e&127;if(!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}let h=g();function g(){let e=new DataView(new ArrayBuffer(8)),t=typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(typeof process!=`object`||typeof process.env!=`object`||process.env.BUF_BIGINT_DISABLE!==`1`);if(t){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||ri||t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(j(e);e>127;)this.buf.push(e&127|128),e>>>=7;return this.buf.push(e),this}int32(e){return A(e),p(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.encodeUtf8(e);return this.uint32(t.byteLength),this.raw(t)}float(e){M(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){j(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){A(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return A(e),e=(e<<1^e>>31)>>>0,p(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=h.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=h.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=h.enc(e);return i(t.lo,t.hi,this.buf),this}sint64(e){let t=h.enc(e),n=t.hi>>31,r=t.lo<<1^n,a=(t.hi<<1|t.lo>>>31)^n;return i(r,a,this.buf),this}uint64(e){let t=h.uEnc(e);return i(t.lo,t.hi,this.buf),this}}class k{constructor(e,t=x().decodeUtf8){this.decodeUtf8=t,this.varint64=r,this.uint32=m,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.uint32(),t=e>>>3,n=e&7;if(t<=0||n<0||n>5)throw Error(`illegal tag: field no `+t+` wire type `+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case S.Varint:for(;this.buf[this.pos++]&128;);break;case S.Bit64:this.pos+=4;case S.Bit32:this.pos+=4;break;case S.LengthDelimited:let n=this.uint32();this.pos+=n;break;case S.StartGroup:for(;;){let[e,n]=this.tag();if(n===S.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(n,e)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return h.dec(...this.varint64())}uint64(){return h.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,h.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return h.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return h.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.decodeUtf8(this.bytes())}}function A(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid int32: `+typeof e);if(!Number.isInteger(e)||e>E||eT||e<0)throw Error(`invalid uint32: `+e)}function M(e){if(typeof e==`string`){let t=e;if(e=Number(e),isNaN(e)&&t!==`NaN`)throw Error(`invalid float32: `+t)}else if(typeof e!=`number`)throw Error(`invalid float32: `+typeof e);if(Number.isFinite(e)&&(e>C||e>>3){case 1:if(e!==10)break;i.target=n.string();continue;case 2:if(e!==18)break;i.targetUrl=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{target:$(e.target)?globalThis.String(e.target):``,targetUrl:$(e.targetUrl)?globalThis.String(e.targetUrl):``}},toJSON(e){let t={};return e.target!==``&&(t.target=e.target),e.targetUrl!==``&&(t.targetUrl=e.targetUrl),t},create(e){return R.fromPartial(e??{})},fromPartial(e){let t=L();return t.target=e.target??``,t.targetUrl=e.targetUrl??``,t}};function z(){return{url:``,deviceId:void 0,firstRequest:!1,duration:0,unknown0:0,language:``,forceSourceLang:!1,unknown1:0,translationHelp:[],wasStream:!1,responseLanguage:``,unknown2:0,unknown3:0,bypassCache:!1,useLivelyVoice:!1,videoTitle:``}}let B={encode(e,t=new O){e.url!==``&&t.uint32(26).string(e.url),e.deviceId!==void 0&&t.uint32(34).string(e.deviceId),e.firstRequest!==!1&&t.uint32(40).bool(e.firstRequest),e.duration!==0&&t.uint32(49).double(e.duration),e.unknown0!==0&&t.uint32(56).int32(e.unknown0),e.language!==``&&t.uint32(66).string(e.language),e.forceSourceLang!==!1&&t.uint32(72).bool(e.forceSourceLang),e.unknown1!==0&&t.uint32(80).int32(e.unknown1);for(let n of e.translationHelp)R.encode(n,t.uint32(90).fork()).join();return e.wasStream!==!1&&t.uint32(104).bool(e.wasStream),e.responseLanguage!==``&&t.uint32(114).string(e.responseLanguage),e.unknown2!==0&&t.uint32(120).int32(e.unknown2),e.unknown3!==0&&t.uint32(128).int32(e.unknown3),e.bypassCache!==!1&&t.uint32(136).bool(e.bypassCache),e.useLivelyVoice!==!1&&t.uint32(144).bool(e.useLivelyVoice),e.videoTitle!==``&&t.uint32(154).string(e.videoTitle),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=z();for(;n.pos>>3){case 3:if(e!==26)break;i.url=n.string();continue;case 4:if(e!==34)break;i.deviceId=n.string();continue;case 5:if(e!==40)break;i.firstRequest=n.bool();continue;case 6:if(e!==49)break;i.duration=n.double();continue;case 7:if(e!==56)break;i.unknown0=n.int32();continue;case 8:if(e!==66)break;i.language=n.string();continue;case 9:if(e!==72)break;i.forceSourceLang=n.bool();continue;case 10:if(e!==80)break;i.unknown1=n.int32();continue;case 11:if(e!==90)break;i.translationHelp.push(R.decode(n,n.uint32()));continue;case 13:if(e!==104)break;i.wasStream=n.bool();continue;case 14:if(e!==114)break;i.responseLanguage=n.string();continue;case 15:if(e!==120)break;i.unknown2=n.int32();continue;case 16:if(e!==128)break;i.unknown3=n.int32();continue;case 17:if(e!==136)break;i.bypassCache=n.bool();continue;case 18:if(e!==144)break;i.useLivelyVoice=n.bool();continue;case 19:if(e!==154)break;i.videoTitle=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):``,deviceId:$(e.deviceId)?globalThis.String(e.deviceId):void 0,firstRequest:$(e.firstRequest)?globalThis.Boolean(e.firstRequest):!1,duration:$(e.duration)?globalThis.Number(e.duration):0,unknown0:$(e.unknown0)?globalThis.Number(e.unknown0):0,language:$(e.language)?globalThis.String(e.language):``,forceSourceLang:$(e.forceSourceLang)?globalThis.Boolean(e.forceSourceLang):!1,unknown1:$(e.unknown1)?globalThis.Number(e.unknown1):0,translationHelp:globalThis.Array.isArray(e?.translationHelp)?e.translationHelp.map(e=>R.fromJSON(e)):[],wasStream:$(e.wasStream)?globalThis.Boolean(e.wasStream):!1,responseLanguage:$(e.responseLanguage)?globalThis.String(e.responseLanguage):``,unknown2:$(e.unknown2)?globalThis.Number(e.unknown2):0,unknown3:$(e.unknown3)?globalThis.Number(e.unknown3):0,bypassCache:$(e.bypassCache)?globalThis.Boolean(e.bypassCache):!1,useLivelyVoice:$(e.useLivelyVoice)?globalThis.Boolean(e.useLivelyVoice):!1,videoTitle:$(e.videoTitle)?globalThis.String(e.videoTitle):``}},toJSON(e){let t={};return e.url!==``&&(t.url=e.url),e.deviceId!==void 0&&(t.deviceId=e.deviceId),e.firstRequest!==!1&&(t.firstRequest=e.firstRequest),e.duration!==0&&(t.duration=e.duration),e.unknown0!==0&&(t.unknown0=Math.round(e.unknown0)),e.language!==``&&(t.language=e.language),e.forceSourceLang!==!1&&(t.forceSourceLang=e.forceSourceLang),e.unknown1!==0&&(t.unknown1=Math.round(e.unknown1)),e.translationHelp?.length&&(t.translationHelp=e.translationHelp.map(e=>R.toJSON(e))),e.wasStream!==!1&&(t.wasStream=e.wasStream),e.responseLanguage!==``&&(t.responseLanguage=e.responseLanguage),e.unknown2!==0&&(t.unknown2=Math.round(e.unknown2)),e.unknown3!==0&&(t.unknown3=Math.round(e.unknown3)),e.bypassCache!==!1&&(t.bypassCache=e.bypassCache),e.useLivelyVoice!==!1&&(t.useLivelyVoice=e.useLivelyVoice),e.videoTitle!==``&&(t.videoTitle=e.videoTitle),t},create(e){return B.fromPartial(e??{})},fromPartial(e){let t=z();return t.url=e.url??``,t.deviceId=e.deviceId??void 0,t.firstRequest=e.firstRequest??!1,t.duration=e.duration??0,t.unknown0=e.unknown0??0,t.language=e.language??``,t.forceSourceLang=e.forceSourceLang??!1,t.unknown1=e.unknown1??0,t.translationHelp=e.translationHelp?.map(e=>R.fromPartial(e))||[],t.wasStream=e.wasStream??!1,t.responseLanguage=e.responseLanguage??``,t.unknown2=e.unknown2??0,t.unknown3=e.unknown3??0,t.bypassCache=e.bypassCache??!1,t.useLivelyVoice=e.useLivelyVoice??!1,t.videoTitle=e.videoTitle??``,t}};function V(){return{url:void 0,duration:void 0,status:0,remainingTime:void 0,unknown0:void 0,translationId:``,language:void 0,message:void 0,isLivelyVoice:!1,unknown2:void 0,shouldRetry:void 0,unknown3:void 0}}let ee={encode(e,t=new O){return e.url!==void 0&&t.uint32(10).string(e.url),e.duration!==void 0&&t.uint32(17).double(e.duration),e.status!==0&&t.uint32(32).int32(e.status),e.remainingTime!==void 0&&t.uint32(40).int32(e.remainingTime),e.unknown0!==void 0&&t.uint32(48).int32(e.unknown0),e.translationId!==``&&t.uint32(58).string(e.translationId),e.language!==void 0&&t.uint32(66).string(e.language),e.message!==void 0&&t.uint32(74).string(e.message),e.isLivelyVoice!==!1&&t.uint32(80).bool(e.isLivelyVoice),e.unknown2!==void 0&&t.uint32(88).int32(e.unknown2),e.shouldRetry!==void 0&&t.uint32(96).int32(e.shouldRetry),e.unknown3!==void 0&&t.uint32(104).int32(e.unknown3),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=V();for(;n.pos>>3){case 1:if(e!==10)break;i.url=n.string();continue;case 2:if(e!==17)break;i.duration=n.double();continue;case 4:if(e!==32)break;i.status=n.int32();continue;case 5:if(e!==40)break;i.remainingTime=n.int32();continue;case 6:if(e!==48)break;i.unknown0=n.int32();continue;case 7:if(e!==58)break;i.translationId=n.string();continue;case 8:if(e!==66)break;i.language=n.string();continue;case 9:if(e!==74)break;i.message=n.string();continue;case 10:if(e!==80)break;i.isLivelyVoice=n.bool();continue;case 11:if(e!==88)break;i.unknown2=n.int32();continue;case 12:if(e!==96)break;i.shouldRetry=n.int32();continue;case 13:if(e!==104)break;i.unknown3=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):void 0,duration:$(e.duration)?globalThis.Number(e.duration):void 0,status:$(e.status)?globalThis.Number(e.status):0,remainingTime:$(e.remainingTime)?globalThis.Number(e.remainingTime):void 0,unknown0:$(e.unknown0)?globalThis.Number(e.unknown0):void 0,translationId:$(e.translationId)?globalThis.String(e.translationId):``,language:$(e.language)?globalThis.String(e.language):void 0,message:$(e.message)?globalThis.String(e.message):void 0,isLivelyVoice:$(e.isLivelyVoice)?globalThis.Boolean(e.isLivelyVoice):!1,unknown2:$(e.unknown2)?globalThis.Number(e.unknown2):void 0,shouldRetry:$(e.shouldRetry)?globalThis.Number(e.shouldRetry):void 0,unknown3:$(e.unknown3)?globalThis.Number(e.unknown3):void 0}},toJSON(e){let t={};return e.url!==void 0&&(t.url=e.url),e.duration!==void 0&&(t.duration=e.duration),e.status!==0&&(t.status=Math.round(e.status)),e.remainingTime!==void 0&&(t.remainingTime=Math.round(e.remainingTime)),e.unknown0!==void 0&&(t.unknown0=Math.round(e.unknown0)),e.translationId!==``&&(t.translationId=e.translationId),e.language!==void 0&&(t.language=e.language),e.message!==void 0&&(t.message=e.message),e.isLivelyVoice!==!1&&(t.isLivelyVoice=e.isLivelyVoice),e.unknown2!==void 0&&(t.unknown2=Math.round(e.unknown2)),e.shouldRetry!==void 0&&(t.shouldRetry=Math.round(e.shouldRetry)),e.unknown3!==void 0&&(t.unknown3=Math.round(e.unknown3)),t},create(e){return ee.fromPartial(e??{})},fromPartial(e){let t=V();return t.url=e.url??void 0,t.duration=e.duration??void 0,t.status=e.status??0,t.remainingTime=e.remainingTime??void 0,t.unknown0=e.unknown0??void 0,t.translationId=e.translationId??``,t.language=e.language??void 0,t.message=e.message??void 0,t.isLivelyVoice=e.isLivelyVoice??!1,t.unknown2=e.unknown2??void 0,t.shouldRetry=e.shouldRetry??void 0,t.unknown3=e.unknown3??void 0,t}};function H(){return{status:0,remainingTime:void 0,message:void 0,unknown0:void 0}}let U={encode(e,t=new O){return e.status!==0&&t.uint32(8).int32(e.status),e.remainingTime!==void 0&&t.uint32(16).int32(e.remainingTime),e.message!==void 0&&t.uint32(26).string(e.message),e.unknown0!==void 0&&t.uint32(32).int32(e.unknown0),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=H();for(;n.pos>>3){case 1:if(e!==8)break;i.status=n.int32();continue;case 2:if(e!==16)break;i.remainingTime=n.int32();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==32)break;i.unknown0=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{status:$(e.status)?globalThis.Number(e.status):0,remainingTime:$(e.remainingTime)?globalThis.Number(e.remainingTime):void 0,message:$(e.message)?globalThis.String(e.message):void 0,unknown0:$(e.unknown0)?globalThis.Number(e.unknown0):void 0}},toJSON(e){let t={};return e.status!==0&&(t.status=Math.round(e.status)),e.remainingTime!==void 0&&(t.remainingTime=Math.round(e.remainingTime)),e.message!==void 0&&(t.message=e.message),e.unknown0!==void 0&&(t.unknown0=Math.round(e.unknown0)),t},create(e){return U.fromPartial(e??{})},fromPartial(e){let t=H();return t.status=e.status??0,t.remainingTime=e.remainingTime??void 0,t.message=e.message??void 0,t.unknown0=e.unknown0??void 0,t}};function te(){return{url:``,duration:0,language:``,responseLanguage:``}}let ne={encode(e,t=new O){return e.url!==``&&t.uint32(10).string(e.url),e.duration!==0&&t.uint32(17).double(e.duration),e.language!==``&&t.uint32(26).string(e.language),e.responseLanguage!==``&&t.uint32(34).string(e.responseLanguage),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=te();for(;n.pos>>3){case 1:if(e!==10)break;i.url=n.string();continue;case 2:if(e!==17)break;i.duration=n.double();continue;case 3:if(e!==26)break;i.language=n.string();continue;case 4:if(e!==34)break;i.responseLanguage=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):``,duration:$(e.duration)?globalThis.Number(e.duration):0,language:$(e.language)?globalThis.String(e.language):``,responseLanguage:$(e.responseLanguage)?globalThis.String(e.responseLanguage):``}},toJSON(e){let t={};return e.url!==``&&(t.url=e.url),e.duration!==0&&(t.duration=e.duration),e.language!==``&&(t.language=e.language),e.responseLanguage!==``&&(t.responseLanguage=e.responseLanguage),t},create(e){return ne.fromPartial(e??{})},fromPartial(e){let t=te();return t.url=e.url??``,t.duration=e.duration??0,t.language=e.language??``,t.responseLanguage=e.responseLanguage??``,t}};function re(){return{default:void 0,cloning:void 0}}let ie={encode(e,t=new O){return e.default!==void 0&&U.encode(e.default,t.uint32(10).fork()).join(),e.cloning!==void 0&&U.encode(e.cloning,t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=re();for(;n.pos>>3){case 1:if(e!==10)break;i.default=U.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.cloning=U.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{default:$(e.default)?U.fromJSON(e.default):void 0,cloning:$(e.cloning)?U.fromJSON(e.cloning):void 0}},toJSON(e){let t={};return e.default!==void 0&&(t.default=U.toJSON(e.default)),e.cloning!==void 0&&(t.cloning=U.toJSON(e.cloning)),t},create(e){return ie.fromPartial(e??{})},fromPartial(e){let t=re();return t.default=e.default!==void 0&&e.default!==null?U.fromPartial(e.default):void 0,t.cloning=e.cloning!==void 0&&e.cloning!==null?U.fromPartial(e.cloning):void 0,t}};function ae(){return{audioFile:new Uint8Array,fileId:``}}let W={encode(e,t=new O){return e.audioFile.length!==0&&t.uint32(18).bytes(e.audioFile),e.fileId!==``&&t.uint32(10).string(e.fileId),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=ae();for(;n.pos>>3){case 2:if(e!==18)break;i.audioFile=n.bytes();continue;case 1:if(e!==10)break;i.fileId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{audioFile:$(e.audioFile)?we(e.audioFile):new Uint8Array,fileId:$(e.fileId)?globalThis.String(e.fileId):``}},toJSON(e){let t={};return e.audioFile.length!==0&&(t.audioFile=Te(e.audioFile)),e.fileId!==``&&(t.fileId=e.fileId),t},create(e){return W.fromPartial(e??{})},fromPartial(e){let t=ae();return t.audioFile=e.audioFile??new Uint8Array,t.fileId=e.fileId??``,t}};function oe(){return{audioFile:new Uint8Array,chunkId:0}}let G={encode(e,t=new O){return e.audioFile.length!==0&&t.uint32(18).bytes(e.audioFile),e.chunkId!==0&&t.uint32(8).int32(e.chunkId),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=oe();for(;n.pos>>3){case 2:if(e!==18)break;i.audioFile=n.bytes();continue;case 1:if(e!==8)break;i.chunkId=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{audioFile:$(e.audioFile)?we(e.audioFile):new Uint8Array,chunkId:$(e.chunkId)?globalThis.Number(e.chunkId):0}},toJSON(e){let t={};return e.audioFile.length!==0&&(t.audioFile=Te(e.audioFile)),e.chunkId!==0&&(t.chunkId=Math.round(e.chunkId)),t},create(e){return G.fromPartial(e??{})},fromPartial(e){let t=oe();return t.audioFile=e.audioFile??new Uint8Array,t.chunkId=e.chunkId??0,t}};function se(){return{audioBuffer:void 0,audioPartsLength:0,fileId:``,version:0}}let K={encode(e,t=new O){return e.audioBuffer!==void 0&&G.encode(e.audioBuffer,t.uint32(10).fork()).join(),e.audioPartsLength!==0&&t.uint32(16).int32(e.audioPartsLength),e.fileId!==``&&t.uint32(26).string(e.fileId),e.version!==0&&t.uint32(32).int32(e.version),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=se();for(;n.pos>>3){case 1:if(e!==10)break;i.audioBuffer=G.decode(n,n.uint32());continue;case 2:if(e!==16)break;i.audioPartsLength=n.int32();continue;case 3:if(e!==26)break;i.fileId=n.string();continue;case 4:if(e!==32)break;i.version=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{audioBuffer:$(e.audioBuffer)?G.fromJSON(e.audioBuffer):void 0,audioPartsLength:$(e.audioPartsLength)?globalThis.Number(e.audioPartsLength):0,fileId:$(e.fileId)?globalThis.String(e.fileId):``,version:$(e.version)?globalThis.Number(e.version):0}},toJSON(e){let t={};return e.audioBuffer!==void 0&&(t.audioBuffer=G.toJSON(e.audioBuffer)),e.audioPartsLength!==0&&(t.audioPartsLength=Math.round(e.audioPartsLength)),e.fileId!==``&&(t.fileId=e.fileId),e.version!==0&&(t.version=Math.round(e.version)),t},create(e){return K.fromPartial(e??{})},fromPartial(e){let t=se();return t.audioBuffer=e.audioBuffer!==void 0&&e.audioBuffer!==null?G.fromPartial(e.audioBuffer):void 0,t.audioPartsLength=e.audioPartsLength??0,t.fileId=e.fileId??``,t.version=e.version??0,t}};function ce(){return{translationId:``,url:``,partialAudioInfo:void 0,audioInfo:void 0}}let le={encode(e,t=new O){return e.translationId!==``&&t.uint32(10).string(e.translationId),e.url!==``&&t.uint32(18).string(e.url),e.partialAudioInfo!==void 0&&K.encode(e.partialAudioInfo,t.uint32(34).fork()).join(),e.audioInfo!==void 0&&W.encode(e.audioInfo,t.uint32(50).fork()).join(),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=ce();for(;n.pos>>3){case 1:if(e!==10)break;i.translationId=n.string();continue;case 2:if(e!==18)break;i.url=n.string();continue;case 4:if(e!==34)break;i.partialAudioInfo=K.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.audioInfo=W.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{translationId:$(e.translationId)?globalThis.String(e.translationId):``,url:$(e.url)?globalThis.String(e.url):``,partialAudioInfo:$(e.partialAudioInfo)?K.fromJSON(e.partialAudioInfo):void 0,audioInfo:$(e.audioInfo)?W.fromJSON(e.audioInfo):void 0}},toJSON(e){let t={};return e.translationId!==``&&(t.translationId=e.translationId),e.url!==``&&(t.url=e.url),e.partialAudioInfo!==void 0&&(t.partialAudioInfo=K.toJSON(e.partialAudioInfo)),e.audioInfo!==void 0&&(t.audioInfo=W.toJSON(e.audioInfo)),t},create(e){return le.fromPartial(e??{})},fromPartial(e){let t=ce();return t.translationId=e.translationId??``,t.url=e.url??``,t.partialAudioInfo=e.partialAudioInfo!==void 0&&e.partialAudioInfo!==null?K.fromPartial(e.partialAudioInfo):void 0,t.audioInfo=e.audioInfo!==void 0&&e.audioInfo!==null?W.fromPartial(e.audioInfo):void 0,t}};function q(){return{status:0,remainingChunks:[]}}let ue={encode(e,t=new O){e.status!==0&&t.uint32(8).int32(e.status);for(let n of e.remainingChunks)t.uint32(18).string(n);return t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=q();for(;n.pos>>3){case 1:if(e!==8)break;i.status=n.int32();continue;case 2:if(e!==18)break;i.remainingChunks.push(n.string());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{status:$(e.status)?globalThis.Number(e.status):0,remainingChunks:globalThis.Array.isArray(e?.remainingChunks)?e.remainingChunks.map(e=>globalThis.String(e)):[]}},toJSON(e){let t={};return e.status!==0&&(t.status=Math.round(e.status)),e.remainingChunks?.length&&(t.remainingChunks=e.remainingChunks),t},create(e){return ue.fromPartial(e??{})},fromPartial(e){let t=q();return t.status=e.status??0,t.remainingChunks=e.remainingChunks?.map(e=>e)||[],t}};function J(){return{language:``,url:``,unknown0:0,translatedLanguage:``,translatedUrl:``,unknown1:0,unknown2:0}}let Y={encode(e,t=new O){return e.language!==``&&t.uint32(10).string(e.language),e.url!==``&&t.uint32(18).string(e.url),e.unknown0!==0&&t.uint32(24).int32(e.unknown0),e.translatedLanguage!==``&&t.uint32(34).string(e.translatedLanguage),e.translatedUrl!==``&&t.uint32(42).string(e.translatedUrl),e.unknown1!==0&&t.uint32(48).int32(e.unknown1),e.unknown2!==0&&t.uint32(56).int32(e.unknown2),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=J();for(;n.pos>>3){case 1:if(e!==10)break;i.language=n.string();continue;case 2:if(e!==18)break;i.url=n.string();continue;case 3:if(e!==24)break;i.unknown0=n.int32();continue;case 4:if(e!==34)break;i.translatedLanguage=n.string();continue;case 5:if(e!==42)break;i.translatedUrl=n.string();continue;case 6:if(e!==48)break;i.unknown1=n.int32();continue;case 7:if(e!==56)break;i.unknown2=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{language:$(e.language)?globalThis.String(e.language):``,url:$(e.url)?globalThis.String(e.url):``,unknown0:$(e.unknown0)?globalThis.Number(e.unknown0):0,translatedLanguage:$(e.translatedLanguage)?globalThis.String(e.translatedLanguage):``,translatedUrl:$(e.translatedUrl)?globalThis.String(e.translatedUrl):``,unknown1:$(e.unknown1)?globalThis.Number(e.unknown1):0,unknown2:$(e.unknown2)?globalThis.Number(e.unknown2):0}},toJSON(e){let t={};return e.language!==``&&(t.language=e.language),e.url!==``&&(t.url=e.url),e.unknown0!==0&&(t.unknown0=Math.round(e.unknown0)),e.translatedLanguage!==``&&(t.translatedLanguage=e.translatedLanguage),e.translatedUrl!==``&&(t.translatedUrl=e.translatedUrl),e.unknown1!==0&&(t.unknown1=Math.round(e.unknown1)),e.unknown2!==0&&(t.unknown2=Math.round(e.unknown2)),t},create(e){return Y.fromPartial(e??{})},fromPartial(e){let t=J();return t.language=e.language??``,t.url=e.url??``,t.unknown0=e.unknown0??0,t.translatedLanguage=e.translatedLanguage??``,t.translatedUrl=e.translatedUrl??``,t.unknown1=e.unknown1??0,t.unknown2=e.unknown2??0,t}};function de(){return{url:``,language:``}}let fe={encode(e,t=new O){return e.url!==``&&t.uint32(10).string(e.url),e.language!==``&&t.uint32(18).string(e.language),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=de();for(;n.pos>>3){case 1:if(e!==10)break;i.url=n.string();continue;case 2:if(e!==18)break;i.language=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):``,language:$(e.language)?globalThis.String(e.language):``}},toJSON(e){let t={};return e.url!==``&&(t.url=e.url),e.language!==``&&(t.language=e.language),t},create(e){return fe.fromPartial(e??{})},fromPartial(e){let t=de();return t.url=e.url??``,t.language=e.language??``,t}};function pe(){return{waiting:!1,subtitles:[]}}let me={encode(e,t=new O){e.waiting!==!1&&t.uint32(8).bool(e.waiting);for(let n of e.subtitles)Y.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=pe();for(;n.pos>>3){case 1:if(e!==8)break;i.waiting=n.bool();continue;case 2:if(e!==18)break;i.subtitles.push(Y.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{waiting:$(e.waiting)?globalThis.Boolean(e.waiting):!1,subtitles:globalThis.Array.isArray(e?.subtitles)?e.subtitles.map(e=>Y.fromJSON(e)):[]}},toJSON(e){let t={};return e.waiting!==!1&&(t.waiting=e.waiting),e.subtitles?.length&&(t.subtitles=e.subtitles.map(e=>Y.toJSON(e))),t},create(e){return me.fromPartial(e??{})},fromPartial(e){let t=pe();return t.waiting=e.waiting??!1,t.subtitles=e.subtitles?.map(e=>Y.fromPartial(e))||[],t}};function he(){return{url:``,timestamp:``}}let X={encode(e,t=new O){return e.url!==``&&t.uint32(10).string(e.url),e.timestamp!==``&&t.uint32(18).string(e.timestamp),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=he();for(;n.pos>>3){case 1:if(e!==10)break;i.url=n.string();continue;case 2:if(e!==18)break;i.timestamp=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):``,timestamp:$(e.timestamp)?globalThis.String(e.timestamp):``}},toJSON(e){let t={};return e.url!==``&&(t.url=e.url),e.timestamp!==``&&(t.timestamp=e.timestamp),t},create(e){return X.fromPartial(e??{})},fromPartial(e){let t=he();return t.url=e.url??``,t.timestamp=e.timestamp??``,t}};function ge(){return{url:``,language:``,responseLanguage:``,unknown0:0,unknown1:0}}let _e={encode(e,t=new O){return e.url!==``&&t.uint32(10).string(e.url),e.language!==``&&t.uint32(18).string(e.language),e.responseLanguage!==``&&t.uint32(26).string(e.responseLanguage),e.unknown0!==0&&t.uint32(40).int32(e.unknown0),e.unknown1!==0&&t.uint32(48).int32(e.unknown1),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=ge();for(;n.pos>>3){case 1:if(e!==10)break;i.url=n.string();continue;case 2:if(e!==18)break;i.language=n.string();continue;case 3:if(e!==26)break;i.responseLanguage=n.string();continue;case 5:if(e!==40)break;i.unknown0=n.int32();continue;case 6:if(e!==48)break;i.unknown1=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{url:$(e.url)?globalThis.String(e.url):``,language:$(e.language)?globalThis.String(e.language):``,responseLanguage:$(e.responseLanguage)?globalThis.String(e.responseLanguage):``,unknown0:$(e.unknown0)?globalThis.Number(e.unknown0):0,unknown1:$(e.unknown1)?globalThis.Number(e.unknown1):0}},toJSON(e){let t={};return e.url!==``&&(t.url=e.url),e.language!==``&&(t.language=e.language),e.responseLanguage!==``&&(t.responseLanguage=e.responseLanguage),e.unknown0!==0&&(t.unknown0=Math.round(e.unknown0)),e.unknown1!==0&&(t.unknown1=Math.round(e.unknown1)),t},create(e){return _e.fromPartial(e??{})},fromPartial(e){let t=ge();return t.url=e.url??``,t.language=e.language??``,t.responseLanguage=e.responseLanguage??``,t.unknown0=e.unknown0??0,t.unknown1=e.unknown1??0,t}};function ve(){return{interval:0,translatedInfo:void 0,pingId:void 0}}let ye={encode(e,t=new O){return e.interval!==0&&t.uint32(8).int32(e.interval),e.translatedInfo!==void 0&&X.encode(e.translatedInfo,t.uint32(18).fork()).join(),e.pingId!==void 0&&t.uint32(24).int32(e.pingId),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=ve();for(;n.pos>>3){case 1:if(e!==8)break;i.interval=n.int32();continue;case 2:if(e!==18)break;i.translatedInfo=X.decode(n,n.uint32());continue;case 3:if(e!==24)break;i.pingId=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{interval:$(e.interval)?F(e.interval):0,translatedInfo:$(e.translatedInfo)?X.fromJSON(e.translatedInfo):void 0,pingId:$(e.pingId)?globalThis.Number(e.pingId):void 0}},toJSON(e){let t={};return e.interval!==0&&(t.interval=I(e.interval)),e.translatedInfo!==void 0&&(t.translatedInfo=X.toJSON(e.translatedInfo)),e.pingId!==void 0&&(t.pingId=Math.round(e.pingId)),t},create(e){return ye.fromPartial(e??{})},fromPartial(e){let t=ve();return t.interval=e.interval??0,t.translatedInfo=e.translatedInfo!==void 0&&e.translatedInfo!==null?X.fromPartial(e.translatedInfo):void 0,t.pingId=e.pingId??void 0,t}};function be(){return{pingId:0}}let Z={encode(e,t=new O){return e.pingId!==0&&t.uint32(8).int32(e.pingId),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=be();for(;n.pos>>3){case 1:if(e!==8)break;i.pingId=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{pingId:$(e.pingId)?globalThis.Number(e.pingId):0}},toJSON(e){let t={};return e.pingId!==0&&(t.pingId=Math.round(e.pingId)),t},create(e){return Z.fromPartial(e??{})},fromPartial(e){let t=be();return t.pingId=e.pingId??0,t}};function Q(){return{uuid:``,module:``}}let xe={encode(e,t=new O){return e.uuid!==``&&t.uint32(10).string(e.uuid),e.module!==``&&t.uint32(18).string(e.module),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=Q();for(;n.pos>>3){case 1:if(e!==10)break;i.uuid=n.string();continue;case 2:if(e!==18)break;i.module=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{uuid:$(e.uuid)?globalThis.String(e.uuid):``,module:$(e.module)?globalThis.String(e.module):``}},toJSON(e){let t={};return e.uuid!==``&&(t.uuid=e.uuid),e.module!==``&&(t.module=e.module),t},create(e){return xe.fromPartial(e??{})},fromPartial(e){let t=Q();return t.uuid=e.uuid??``,t.module=e.module??``,t}};function Se(){return{secretKey:``,expires:0}}let Ce={encode(e,t=new O){return e.secretKey!==``&&t.uint32(10).string(e.secretKey),e.expires!==0&&t.uint32(16).int32(e.expires),t},decode(e,t){let n=e instanceof k?e:new k(e),r=t===void 0?n.len:n.pos+t,i=Se();for(;n.pos>>3){case 1:if(e!==10)break;i.secretKey=n.string();continue;case 2:if(e!==16)break;i.expires=n.int32();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},fromJSON(e){return{secretKey:$(e.secretKey)?globalThis.String(e.secretKey):``,expires:$(e.expires)?globalThis.Number(e.expires):0}},toJSON(e){let t={};return e.secretKey!==``&&(t.secretKey=e.secretKey),e.expires!==0&&(t.expires=Math.round(e.expires)),t},create(e){return Ce.fromPartial(e??{})},fromPartial(e){let t=Se();return t.secretKey=e.secretKey??``,t.expires=e.expires??0,t}};function we(e){if(globalThis.Buffer)return Uint8Array.from(globalThis.Buffer.from(e,`base64`));{let t=globalThis.atob(e),n=new Uint8Array(t.length);for(let e=0;e{t.push(globalThis.String.fromCharCode(e))}),globalThis.btoa(t.join(``))}}function $(e){return e!=null}},"./node_modules/@vot.js/shared/dist/secure.js":(e,t,n)=>{"use strict";n.d(t,{C0:()=>u,MG:()=>p,bT:()=>f,dD:()=>l,yk:()=>d});var r=n(`./node_modules/@vot.js/shared/dist/data/config.js`),i=n(`./node_modules/@vot.js/shared/dist/utils/logger.js`);let{componentVersion:a}=r.A;async function o(){return typeof window<`u`&&window.crypto?window.crypto:await Promise.resolve().then(function(){var e=Error(`Cannot find module 'node:crypto'`);throw e.code=`MODULE_NOT_FOUND`,e})}let s=new TextEncoder;async function c(e,t,n){let r=await o(),i=await r.subtle.importKey(`raw`,s.encode(t),{name:`HMAC`,hash:{name:e}},!1,[`sign`,`verify`]);return await r.subtle.sign(`HMAC`,i,n)}async function l(e){let t=await c(`SHA-256`,r.A.hmac,e);return new Uint8Array(t).reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``)}async function u(e,t,n,r){let{secretKey:i,uuid:o}=t,c=`${o}:${r}:${a}`,u=s.encode(c),d=await l(u);if(e===`Ya-Summary`)return{[`X-${e}-Sk`]:i,[`X-${e}-Token`]:`${d}:${c}`};let f=await l(n);return{[`${e}-Signature`]:f,[`Sec-${e}-Sk`]:i,[`Sec-${e}-Token`]:`${d}:${c}`}}function d(){let e=`0123456789ABCDEF`,t=``;for(let n=0;n<32;n++){let n=Math.floor(Math.random()*16);t+=e[n]}return t}async function f(e,t){try{let n=s.encode(t),r=await c(`SHA-1`,e,n);return btoa(String.fromCharCode(...new Uint8Array(r)))}catch(e){return i.A.error(e),!1}}let p={"sec-ch-ua":`"Chromium";v="134", "YaBrowser";v="${a.slice(0,5)}", "Not?A_Brand";v="24", "Yowser";v="2.5"`,"sec-ch-ua-full-version-list":`"Chromium";v="134.0.6998.543", "YaBrowser";v="${a}", "Not?A_Brand";v="24.0.0.0", "Yowser";v="2.5"`,"Sec-Fetch-Mode":`no-cors`}},"./node_modules/@vot.js/shared/dist/types/logger.js":(e,t,n)=>{"use strict";n.d(t,{T:()=>r});var r;(function(e){e[e.DEBUG=0]=`DEBUG`,e[e.INFO=1]=`INFO`,e[e.WARN=2]=`WARN`,e[e.ERROR=3]=`ERROR`,e[e.SILENCE=4]=`SILENCE`})(r||={})},"./node_modules/@vot.js/shared/dist/utils/logger.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(`./node_modules/@vot.js/shared/dist/data/config.js`),i=n(`./node_modules/@vot.js/shared/dist/types/logger.js`);class a{static prefix=`[vot.js v${r.A.version}]`;static canLog(e){return r.A.loggerLevel<=e}static log(...e){a.canLog(i.T.DEBUG)&&console.log(a.prefix,...e)}static info(...e){a.canLog(i.T.INFO)&&console.info(a.prefix,...e)}static warn(...e){a.canLog(i.T.WARN)&&console.warn(a.prefix,...e)}static error(...e){a.canLog(i.T.ERROR)&&console.error(a.prefix,...e)}}},"./node_modules/@vot.js/shared/dist/utils/subs.js":(e,t,n)=>{"use strict";n.d(t,{vk:()=>c});function r(e,t=`,`){let n=e/1e3,r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=Math.floor(n%60),o=Math.floor(e%1e3);return`${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}:${a.toString().padStart(2,`0`)}${t}${o.toString().padStart(3,`0`)}`}function i(e){let t=e.split(` `)?.[0]?.split(`:`);t.length<3&&t.unshift(`00`);let[n,r,i]=t,a=+i.replace(/[,.]/,``),o=r*6e4,s=n*36e5;return s+o+a}function a(e,t=`srt`){let n=t===`vtt`,i=n?`.`:`,`,a=e.subtitles.map((e,t)=>{let a=n?``:`${t+1}\n`;return a+`${r(e.startMs,i)} --> ${r(e.startMs+e.durationMs,i)}\n${e.text}\n\n`}).join(``).trim();return n?`WEBVTT\n\n${a}`:a}function o(e,t=`srt`){let n=e.split(/\r?\n\r?\n/g);t===`vtt`&&n.shift(),/^\d+\r?\n/.exec(n?.[0]??``)&&(t=`srt`);let r=+(t===`srt`),a=n.reduce((e,t)=>{let n=t.trim().split(` `),a=n[r],o=n.slice(r+1).join(` `);if((n.length!==2||!t.includes(` --> `))&&!a?.includes(` --> `))return e.length===0||(e[e.length-1].text+=`\n\n${n.join(` `)}`),e;let[s,c]=a.split(` --> `),l=i(s),u=i(c),d=u-l;return e.push({text:o,startMs:l,durationMs:d,speakerId:`0`}),e},[]);return{containsTokens:!1,subtitles:a}}function s(e){return typeof e==`string`?/^(WEBVTT([^\n]+)?)(\r?\n)/.exec(e)?`vtt`:`srt`:`json`}function c(e,t=`srt`){let n=s(e);return n===t?e:n===`json`?a(e,t):(e=o(e,n),t===`json`?e:a(e,t))}},"./node_modules/@vot.js/shared/dist/utils/utils.js":(e,t,n)=>{"use strict";n.d(t,{ec:()=>s,fl:()=>c,lg:()=>o,u9:()=>a});var r=n(`./node_modules/@vot.js/shared/dist/data/config.js`);let i={afr:`af`,aka:`ak`,alb:`sq`,amh:`am`,ara:`ar`,arm:`hy`,asm:`as`,aym:`ay`,aze:`az`,baq:`eu`,bel:`be`,ben:`bn`,bos:`bs`,bul:`bg`,bur:`my`,cat:`ca`,chi:`zh`,cos:`co`,cze:`cs`,dan:`da`,div:`dv`,dut:`nl`,eng:`en`,epo:`eo`,est:`et`,ewe:`ee`,fin:`fi`,fre:`fr`,fry:`fy`,geo:`ka`,ger:`de`,gla:`gd`,gle:`ga`,glg:`gl`,gre:`el`,grn:`gn`,guj:`gu`,hat:`ht`,hau:`ha`,hin:`hi`,hrv:`hr`,hun:`hu`,ibo:`ig`,ice:`is`,ind:`id`,ita:`it`,jav:`jv`,jpn:`ja`,kan:`kn`,kaz:`kk`,khm:`km`,kin:`rw`,kir:`ky`,kor:`ko`,kur:`ku`,lao:`lo`,lat:`la`,lav:`lv`,lin:`ln`,lit:`lt`,ltz:`lb`,lug:`lg`,mac:`mk`,mal:`ml`,mao:`mi`,mar:`mr`,may:`ms`,mlg:`mg`,mlt:`mt`,mon:`mn`,nep:`ne`,nor:`no`,nya:`ny`,ori:`or`,orm:`om`,pan:`pa`,per:`fa`,pol:`pl`,por:`pt`,pus:`ps`,que:`qu`,rum:`ro`,rus:`ru`,san:`sa`,sin:`si`,slo:`sk`,slv:`sl`,smo:`sm`,sna:`sn`,snd:`sd`,som:`so`,sot:`st`,spa:`es`,srp:`sr`,sun:`su`,swa:`sw`,swe:`sv`,tam:`ta`,tat:`tt`,tel:`te`,tgk:`tg`,tha:`th`,tir:`ti`,tso:`ts`,tuk:`tk`,tur:`tr`,uig:`ug`,ukr:`uk`,urd:`ur`,uzb:`uz`,vie:`vi`,wel:`cy`,xho:`xh`,yid:`yi`,yor:`yo`,zul:`zu`};async function a(e,t={headers:{"User-Agent":r.A.userAgent}}){let{timeout:n=3e3,...i}=t,a=new AbortController,o=setTimeout(()=>a.abort(),n),s=await fetch(e,{signal:a.signal,...i});return clearTimeout(o),s}function o(){return Math.floor(Date.now()/1e3)}function s(e){return e.length===3?i[e]:e.toLowerCase().split(/[_;-]/)[0].trim()}function c(e,t=`mp4`){let n=`https://${r.A.mediaProxy}/v1/proxy/video.${t}?format=base64&force=true`;return e instanceof URL?`${n}&url=${btoa(e.href)}&origin=${e.origin}&referer=${e.origin}`:`${n}&url=${btoa(e)}`}},"./node_modules/bowser/es5.js":function(e){(function(t,n){e.exports=n()})(this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,`default`,{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=90)}({17:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=n(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var n=t.match(e);return n&&n.length>0&&n[1]||``},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||``},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case`NT`:return`NT`;case`XP`:return`XP`;case`NT 5.0`:return`2000`;case`NT 5.1`:return`XP`;case`NT 5.2`:return`2003`;case`NT 6.0`:return`Vista`;case`NT 6.1`:return`7`;case`NT 6.2`:return`8`;case`NT 6.3`:return`8.1`;case`NT 10.0`:return`10`;default:return}},e.getMacOSVersionName=function(e){var t=e.split(`.`).splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),t[0]===10)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),!(t[0]===1&&t[1]<5))return t[0]===1&&t[1]<6?`Cupcake`:t[0]===1&&t[1]>=6?`Donut`:t[0]===2&&t[1]<2?`Eclair`:t[0]===2&&t[1]===2?`Froyo`:t[0]===2&&t[1]>2?`Gingerbread`:t[0]===3?`Honeycomb`:t[0]===4&&t[1]<1?`Ice Cream Sandwich`:t[0]===4&&t[1]<4?`Jelly Bean`:t[0]===4&&t[1]>=4?`KitKat`:t[0]===5?`Lollipop`:t[0]===6?`Marshmallow`:t[0]===7?`Nougat`:t[0]===8?`Oreo`:t[0]===9?`Pie`:void 0},e.getVersionPrecision=function(e){return e.split(`.`).length},e.compareVersions=function(t,n,r){r===void 0&&(r=!1);var i=e.getVersionPrecision(t),a=e.getVersionPrecision(n),o=Math.max(i,a),s=0,c=e.map([t,n],function(t){var n=o-e.getVersionPrecision(t),r=t+Array(n+1).join(`.0`);return e.map(r.split(`.`),function(e){return Array(20-e.length).join(`0`)+e}).reverse()});for(r&&(s=o-Math.min(i,a)),--o;o>=s;){if(c[0][o]>c[1][o])return 1;if(c[0][o]===c[1][o]){if(o===s)return 0;--o}else if(c[0][o]1?i-1:0),o=1;o0){var o=Object.keys(n),c=s.default.find(o,function(e){return t.isOS(e)});if(c){var l=this.satisfies(n[c]);if(l!==void 0)return l}var u=s.default.find(o,function(e){return t.isPlatform(e)});if(u){var d=this.satisfies(n[u]);if(d!==void 0)return d}}if(a>0){var f=Object.keys(i),p=s.default.find(f,function(e){return t.isBrowser(e,!0)});if(p!==void 0)return this.compareVersion(i[p])}},t.isBrowser=function(e,t){t===void 0&&(t=!1);var n=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),i=s.default.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n},t.compareVersion=function(e){var t=[0],n=e,r=!1,i=this.getBrowserVersion();if(typeof i==`string`)return e[0]===`>`||e[0]===`<`?(n=e.substr(1),e[1]===`=`?(r=!0,n=e.substr(2)):t=[],e[0]===`>`?t.push(1):t.push(-1)):e[0]===`=`?n=e.substr(1):e[0]===`~`&&(r=!0,n=e.substr(1)),t.indexOf(s.default.compareVersions(i,n,r))>-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 t===void 0&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return e===void 0&&(e=[]),e.some(function(e){return t.is(e)})},e}();t.default=l,e.exports=t.default},92:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=/version\/(\d+(\.?_?\d+)+)/i,o=[{test:[/googlebot/i],describe:function(e){var t={name:`Googlebot`},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:`Opera`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:`Opera`},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:`Samsung Internet for Android`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:`NAVER Whale Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:`MZ Browser`},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:`Focus`},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:`Swing`},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:`Opera Coast`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:`Opera Touch`},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:`Yandex Browser`},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:`UC Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:`Maxthon`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:`Epiphany`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:`Puffin`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:`Sleipnir`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:`K-Meleon`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:`WeChat`},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?`QQ Browser Lite`:`QQ Browser`},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:`Internet Explorer`},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:`Microsoft Edge`},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:`Microsoft Edge`},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:`Vivaldi`},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:`SeaMonkey`},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:`Sailfish`},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:`Amazon Silk`},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:`PhantomJS`},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:`SlimerJS`},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:`BlackBerry`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:`WebOS Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:`Bada`},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:`Tizen`},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:`QupZilla`},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:`Firefox`},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:`Electron`},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:`Miui`},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:`Chromium`},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:`Chrome`},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:`Google Search`},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:`Android Browser`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:`PlayStation 4`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:`Safari`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=e.search(`\\(`)===-1?/^(.*)\/(.*) /:/^(.*)\/(.*)[ \t]\((.*)/;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=o,e.exports=t.default},93:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),o=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.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:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=i.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,`.`),n=i.default.getMacOSVersionName(t),r={name:a.OS_MAP.MacOS,version:t};return n&&(r.versionName=n),r}},{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:a.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=i.default.getAndroidVersionName(t),r={name:a.OS_MAP.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:a.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{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:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=o,e.exports=t.default},94:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),o=[{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`,n={type:a.PLATFORMS_MAP.mobile,vendor:`Huawei`};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Nexus`}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Apple`,model:`iPad`}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Apple`,model:`iPad`}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Amazon`,model:`Kindle Fire HD 7`}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Amazon`}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:`Apple`,model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`Nexus`}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getBrowserName(!0)===`blackberry`},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`BlackBerry`}}},{test:function(e){return e.getBrowserName(!0)===`bada`},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getBrowserName()===`windows phone`},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`Microsoft`}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(`.`)[0]);return e.getOSName(!0)===`android`&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return e.getOSName(!0)===`android`},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getOSName(!0)===`macos`},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:`Apple`}}},{test:function(e){return e.getOSName(!0)===`windows`},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return e.getOSName(!0)===`linux`},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return e.getOSName(!0)===`playstation 4`},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return e.getOSName(!0)===`roku`},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=o,e.exports=t.default},95:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),o=[{test:function(e){return e.getBrowserName(!0)===`microsoft edge`},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];t.default=o,e.exports=t.default}})})},"./node_modules/browser-id3-writer/dist/browser-id3-writer.mjs":(e,t,n)=>{"use strict";n.d(t,{Q:()=>d});function r(e){return String(e).split(``).map(e=>e.charCodeAt(0))}function i(e){return new Uint8Array(r(e))}function a(e){let t=new ArrayBuffer(2*e.length),n=new Uint8Array(t);return new Uint16Array(t).set(r(e)),n}function o(e){let t=255;return[e>>>24&t,e>>>16&t,e>>>8&t,e&t]}function s(e){return 11+e}function c(e,t,n,r){return 11+t+1+1+(r?2+2*(n+1):n+1)+e}function l(e){let t=0;return e.forEach(e=>{t+=2+2*e[0].length+2+2+2*e[1].length+2}),11+t}function u(e,t){let n=2*t,r=0;return e.forEach(e=>{r+=2+2*e[0].length+2+4}),18+n+2+r}class d{_setIntegerFrame(e,t){let n=parseInt(t,10);this.frames.push({name:e,value:n,size:s(n.toString().length)})}_setStringFrame(e,t){let n=t.toString(),r=13+2*n.length;e===`TDAT`&&(r=s(n.length)),this.frames.push({name:e,value:n,size:r})}_setPictureFrame(e,t,n,r){let i=function(e){if(!e||!e.length)return null;if(e[0]===255&&e[1]===216&&e[2]===255)return`image/jpeg`;if(e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71)return`image/png`;if(e[0]===71&&e[1]===73&&e[2]===70)return`image/gif`;if(e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80)return`image/webp`;let t=e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0,n=e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42;return t||n?`image/tiff`:e[0]===66&&e[1]===77?`image/bmp`:e[0]===0&&e[1]===0&&e[2]===1&&e[3]===0?`image/x-icon`:null}(new Uint8Array(t)),a=n.toString();if(!i)throw Error(`Unknown picture MIME type`);n||(r=!1),this.frames.push({name:`APIC`,value:t,pictureType:e,mimeType:i,useUnicodeEncoding:r,description:a,size:c(t.byteLength,i.length,a.length,r)})}_setLyricsFrame(e,t,n){let r=e.split(``).map(e=>e.charCodeAt(0)),i=t.toString(),a=n.toString();var o,s;this.frames.push({name:`USLT`,value:a,language:r,description:i,size:(o=i.length,s=a.length,16+2*o+2+2+2*s)})}_setCommentFrame(e,t,n){let r=e.split(``).map(e=>e.charCodeAt(0)),i=t.toString(),a=n.toString();var o,s;this.frames.push({name:`COMM`,value:a,language:r,description:i,size:(o=i.length,s=a.length,16+2*o+2+2+2*s)})}_setPrivateFrame(e,t){let n=e.toString();var r,i;this.frames.push({name:`PRIV`,value:t,id:n,size:(r=n.length,i=t.byteLength,10+r+1+i)})}_setUserStringFrame(e,t){let n=e.toString(),r=t.toString();var i,a;this.frames.push({name:`TXXX`,description:n,value:r,size:(i=n.length,a=r.length,13+2*i+2+2+2*a)})}_setUrlLinkFrame(e,t){let n=t.toString();var r;this.frames.push({name:e,value:n,size:(r=n.length,10+r)})}_setPairedTextFrame(e,t){this.frames.push({name:e,value:t,size:l(t)})}_setSynchronisedLyricsFrame(e,t,n,r,i){let a=i.toString(),o=r.split(``).map(e=>e.charCodeAt(0));this.frames.push({name:`SYLT`,value:t,language:o,description:a,type:e,timestampFormat:n,size:u(t,a.length)})}constructor(e){if(!e||typeof e!=`object`||!(`byteLength`in e))throw Error(`First argument should be an instance of ArrayBuffer or Buffer`);this.arrayBuffer=e,this.padding=4096,this.frames=[],this.url=``}setFrame(e,t){switch(e){case`TPE1`:case`TCOM`:case`TCON`:{if(!Array.isArray(t))throw Error(`${e} frame value should be an array of strings`);let n=e===`TCON`?`;`:`/`,r=t.join(n);this._setStringFrame(e,r);break}case`TLAN`:case`TIT1`:case`TIT2`:case`TIT3`:case`TALB`:case`TPE2`:case`TPE3`:case`TPE4`:case`TRCK`:case`TPOS`:case`TMED`:case`TPUB`:case`TCOP`:case`TKEY`:case`TEXT`:case`TDAT`:case`TCMP`:case`TSRC`:this._setStringFrame(e,t);break;case`TBPM`:case`TLEN`:case`TYER`:this._setIntegerFrame(e,t);break;case`USLT`:if(t.language=t.language||`eng`,typeof t!=`object`||!(`description`in t)||!(`lyrics`in t))throw Error(`USLT frame value should be an object with keys description and lyrics`);if(t.language&&!t.language.match(/[a-z]{3}/i))throw Error(`Language must be coded following the ISO 639-2 standards`);this._setLyricsFrame(t.language,t.description,t.lyrics);break;case`APIC`:if(typeof t!=`object`||!(`type`in t)||!(`data`in t)||!(`description`in t))throw Error(`APIC frame value should be an object with keys type, data and description`);if(t.type<0||t.type>20)throw Error(`Incorrect APIC frame picture type`);this._setPictureFrame(t.type,t.data,t.description,!!t.useUnicodeEncoding);break;case`TXXX`:if(typeof t!=`object`||!(`description`in t)||!(`value`in t))throw Error(`TXXX frame value should be an object with keys description and value`);this._setUserStringFrame(t.description,t.value);break;case`WCOM`:case`WCOP`:case`WOAF`:case`WOAR`:case`WOAS`:case`WORS`:case`WPAY`:case`WPUB`:this._setUrlLinkFrame(e,t);break;case`COMM`:if(t.language=t.language||`eng`,typeof t!=`object`||!(`description`in t)||!(`text`in t))throw Error(`COMM frame value should be an object with keys description and text`);if(t.language&&!t.language.match(/[a-z]{3}/i))throw Error(`Language must be coded following the ISO 639-2 standards`);this._setCommentFrame(t.language,t.description,t.text);break;case`PRIV`:if(typeof t!=`object`||!(`id`in t)||!(`data`in t))throw Error(`PRIV frame value should be an object with keys id and data`);this._setPrivateFrame(t.id,t.data);break;case`IPLS`:if(!Array.isArray(t)||!Array.isArray(t[0]))throw Error(`IPLS frame value should be an array of pairs`);this._setPairedTextFrame(e,t);break;case`SYLT`:if(typeof t!=`object`||!(`type`in t)||!(`text`in t)||!(`timestampFormat`in t))throw Error(`SYLT frame value should be an object with keys type, text and timestampFormat`);if(!Array.isArray(t.text)||!Array.isArray(t.text[0]))throw Error(`SYLT frame text value should be an array of pairs`);if(t.type<0||t.type>6)throw Error(`Incorrect SYLT frame content type`);if(t.timestampFormat<1||t.timestampFormat>2)throw Error(`Incorrect SYLT frame time stamp format`);t.language=t.language||`eng`,t.description=t.description||``,this._setSynchronisedLyricsFrame(t.type,t.text,t.timestampFormat,t.language,t.description);break;default:throw Error(`Unsupported frame ${e}`)}return this}removeTag(){if(this.arrayBuffer.byteLength<10)return;let e=new Uint8Array(this.arrayBuffer),t=e[3],n=((r=[e[6],e[7],e[8],e[9]])[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+10;var r,i;(i=e)[0]!==73||i[1]!==68||i[2]!==51||t<2||t>4||(this.arrayBuffer=new Uint8Array(e.subarray(n)).buffer)}addTag(){this.removeTag();let e=[255,254],t=10+this.frames.reduce((e,t)=>e+t.size,0)+this.padding,n=new ArrayBuffer(this.arrayBuffer.byteLength+t),r=new Uint8Array(n),s=0,c=[];return c=[73,68,51,3],r.set(c,s),s+=c.length,s++,s++,c=function(e){let t=127;return[e>>>21&t,e>>>14&t,e>>>7&t,e&t]}(t-10),r.set(c,s),s+=c.length,this.frames.forEach(t=>{switch(c=i(t.name),r.set(c,s),s+=c.length,c=o(t.size-10),r.set(c,s),s+=c.length,s+=2,t.name){case`WCOM`:case`WCOP`:case`WOAF`:case`WOAR`:case`WOAS`:case`WORS`:case`WPAY`:case`WPUB`:c=i(t.value),r.set(c,s),s+=c.length;break;case`TPE1`:case`TCOM`:case`TCON`:case`TLAN`:case`TIT1`:case`TIT2`:case`TIT3`:case`TALB`:case`TPE2`:case`TPE3`:case`TPE4`:case`TRCK`:case`TPOS`:case`TKEY`:case`TMED`:case`TPUB`:case`TCOP`:case`TEXT`:case`TSRC`:c=[1].concat(e),r.set(c,s),s+=c.length,c=a(t.value),r.set(c,s),s+=c.length;break;case`TXXX`:case`USLT`:case`COMM`:c=[1],t.name!==`USLT`&&t.name!==`COMM`||(c=c.concat(t.language)),c=c.concat(e),r.set(c,s),s+=c.length,c=a(t.description),r.set(c,s),s+=c.length,c=[0,0].concat(e),r.set(c,s),s+=c.length,c=a(t.value),r.set(c,s),s+=c.length;break;case`TBPM`:case`TLEN`:case`TDAT`:case`TYER`:s++,c=i(t.value),r.set(c,s),s+=c.length;break;case`PRIV`:c=i(t.id),r.set(c,s),s+=c.length,s++,r.set(new Uint8Array(t.value),s),s+=t.value.byteLength;break;case`APIC`:c=[t.useUnicodeEncoding?1:0],r.set(c,s),s+=c.length,c=i(t.mimeType),r.set(c,s),s+=c.length,c=[0,t.pictureType],r.set(c,s),s+=c.length,t.useUnicodeEncoding?(c=[].concat(e),r.set(c,s),s+=c.length,c=a(t.description),r.set(c,s),s+=c.length,s+=2):(c=i(t.description),r.set(c,s),s+=c.length,s++),r.set(new Uint8Array(t.value),s),s+=t.value.byteLength;break;case`IPLS`:c=[1],r.set(c,s),s+=c.length,t.value.forEach(t=>{c=[].concat(e),r.set(c,s),s+=c.length,c=a(t[0].toString()),r.set(c,s),s+=c.length,c=[0,0].concat(e),r.set(c,s),s+=c.length,c=a(t[1].toString()),r.set(c,s),s+=c.length,c=[0,0],r.set(c,s),s+=c.length});break;case`SYLT`:c=[1].concat(t.language,t.timestampFormat,t.type),r.set(c,s),s+=c.length,c=[].concat(e),r.set(c,s),s+=c.length,c=a(t.description),r.set(c,s),s+=c.length,s+=2,t.value.forEach(t=>{c=[].concat(e),r.set(c,s),s+=c.length,c=a(t[0].toString()),r.set(c,s),s+=c.length,c=[0,0],r.set(c,s),s+=c.length,c=o(t[1]),r.set(c,s),s+=c.length})}}),s+=this.padding,r.set(new Uint8Array(this.arrayBuffer),s),this.arrayBuffer=n,n}getBlob(){return new Blob([this.arrayBuffer],{type:`audio/mpeg`})}getURL(){return this.url||=URL.createObjectURL(this.getBlob()),this.url}revokeURL(){URL.revokeObjectURL(this.url)}}},"./node_modules/chaimu/dist/index.js":(e,t,n)=>{"use strict";n.d(t,{Ay:()=>u,GZ:()=>o});let r={version:`1.0.6`,debug:!1,fetchFn:fetch.bind(window)},i={log:(...e)=>{if(r.debug)return console.log(`%c✦ chaimu.js v${r.version} ✦`,`background: #000; color: #fff; padding: 0 8px`,...e)}},a=[`playing`,`ratechange`,`play`,`waiting`,`pause`,`seeked`];function o(){let e=window.AudioContext||window.webkitAudioContext;return e?new e:void 0}class s{static name=`BasePlayer`;chaimu;fetch;_src;fetchOpts;constructor(e,t){this.chaimu=e,this._src=t,this.fetch=this.chaimu.fetchFn,this.fetchOpts=this.chaimu.fetchOpts}async init(){return this}async clear(){return this}lipSync(e=!1){return this}handleVideoEvent=e=>(i.log(`handle video ${e.type}`),this.lipSync(e.type),this);removeVideoEvents(){for(let e of a)this.chaimu.video?.removeEventListener(e,this.handleVideoEvent);return this}addVideoEvents(){for(let e of a)this.chaimu.video?.addEventListener(e,this.handleVideoEvent);return this}async play(){return this}async pause(){return this}get name(){return this.constructor.name}set src(e){this._src=e}get src(){return this._src}get currentSrc(){return this._src}set volume(e){}get volume(){return 0}get playbackRate(){return 0}set playbackRate(e){}get currentTime(){return 0}}class c extends s{static name=`AudioPlayer`;audio;gainNode;audioSource;constructor(e,t){super(e,t),this.updateAudio()}initAudioBooster(){return this.chaimu.audioContext?(this.disconnectAudioNodes(),this.gainNode=this.chaimu.audioContext.createGain(),this.gainNode.connect(this.chaimu.audioContext.destination),this.audioSource=this.chaimu.audioContext.createMediaElementSource(this.audio),this.audioSource.connect(this.gainNode),this):this}disconnectAudioNodes(){this.audioSource&&(this.audioSource.disconnect(),this.audioSource=void 0),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=void 0)}updateAudio(){return this.audio=new Audio(this.src),this.audio.crossOrigin=`anonymous`,this}async init(){return this.updateAudio(),this.initAudioBooster(),this}audioErrorHandle=e=>{console.error(`[AudioPlayer]`,e)};lipSync(e=!1){if(i.log(`[AudioPlayer] lipsync video`,this.chaimu.video),!this.chaimu.video)return this;if(this.audio.currentTime=this.chaimu.video.currentTime,this.audio.playbackRate=this.chaimu.video.playbackRate,!e)return i.log(`[AudioPlayer] lipsync mode isn't set`),this;switch(i.log(`[AudioPlayer] lipsync mode is ${e}`),e){case`play`:case`playing`:case`seeked`:return this.chaimu.video.paused||this.syncPlay(),this;case`pause`:case`waiting`:return this.pause(),this;default:return this}}async clear(){return this.audio.pause(),this.audio.src=``,this.audio.removeAttribute(`src`),this.disconnectAudioNodes(),this}syncPlay(){return i.log(`[AudioPlayer] sync play called`),this.audio&&this.audio.play().catch(this.audioErrorHandle),this}async play(){return i.log(`[AudioPlayer] play called`),this.audio&&await this.audio.play().catch(this.audioErrorHandle),this}async pause(){return i.log(`[AudioPlayer] pause called`),this.audio&&this.audio.pause(),this}set src(e){if(this._src=e,!e){this.clear();return}this.audio.src=e}get src(){return this._src}get currentSrc(){return this.audio.currentSrc}set volume(e){if(this.gainNode){this.gainNode.gain.value=e;return}this.audio.volume=e}get volume(){return this.gainNode?this.gainNode.gain.value:this.audio.volume}get playbackRate(){return this.audio.playbackRate}set playbackRate(e){this.audio.playbackRate=e}get currentTime(){return this.audio.currentTime}}class l extends s{static name=`ChaimuPlayer`;audioBuffer;audioElement;mediaElementSource;gainNode;blobUrl;isClearing=!1;isInitializing=!1;clearingPromise;async fetchAudio(){if(!this._src)throw Error(`No audio source provided`);if(!this.chaimu.audioContext)throw Error(`No audio context available`);i.log(`[ChaimuPlayer] Fetching audio from ${this._src}...`);let e;try{let t=await this.fetch(this._src,this.fetchOpts);i.log(`[ChaimuPlayer] Decoding fetched audio...`);let n=await t.arrayBuffer(),r=new Blob([n]);e=URL.createObjectURL(r),this.audioBuffer=await this.chaimu.audioContext.decodeAudioData(n),this.blobUrl&&URL.revokeObjectURL(this.blobUrl),this.blobUrl=e,e=void 0}catch(t){throw e&&URL.revokeObjectURL(e),Error(`Failed to fetch audio file, because ${t.message}`)}return this}initAudioBooster(){return this.chaimu.audioContext?(this.disconnectAudioNodes(),this.gainNode=this.chaimu.audioContext.createGain(),this):this}disconnectAudioNodes(){this.mediaElementSource&&(this.mediaElementSource.disconnect(),this.mediaElementSource=void 0),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=void 0)}async init(){if(this.isInitializing)throw Error(`Initialization already in progress`);this.isInitializing=!0;try{return await this.fetchAudio(),this.initAudioBooster(),this.createAudioElement(),this}finally{this.isInitializing=!1}}createAudioElement(){if(!this.chaimu.audioContext)throw Error(`No audio context available`);if(!this.blobUrl)throw Error(`No blob URL available.`);let e=new Audio(this.blobUrl);e.crossOrigin=`anonymous`,`preservesPitch`in e&&(e.preservesPitch=!0,`mozPreservesPitch`in e&&(e.mozPreservesPitch=!0),`webkitPreservesPitch`in e&&(e.webkitPreservesPitch=!0)),this.audioElement=e,this.mediaElementSource=this.chaimu.audioContext.createMediaElementSource(e),this.mediaElementSource.connect(this.gainNode),this.gainNode.connect(this.chaimu.audioContext.destination)}lipSync(e=!1){if(i.log(`[ChaimuPlayer] lipsync video`,this.chaimu.video,this),!this.chaimu.video)return this;if(!e)return i.log(`[ChaimuPlayer] lipsync mode isn't set`),this;switch(i.log(`[ChaimuPlayer] lipsync mode is ${e}`),e){case`play`:case`playing`:case`ratechange`:case`seeked`:return this.chaimu.video.paused||this.start(),this;case`pause`:case`waiting`:return this.pause(),this;default:return this}}async reopenCtx(){if(!this.chaimu.audioContext)throw Error(`No audio context available`);try{this.chaimu.audioContext.state!==`closed`&&await this.chaimu.audioContext.close()}catch(e){i.log(`[ChaimuPlayer] Failed to close audio context:`,e)}return this.chaimu.audioContext=o(),this}async clear(){if(this.isClearing&&this.clearingPromise)return this.clearingPromise;if(!this.chaimu.audioContext)throw Error(`No audio context available`);return i.log(`clear audio context`),this.isClearing=!0,this.clearingPromise=(async()=>{try{await this.pause(),this.audioElement&&(this.audioElement.pause(),this.audioElement=void 0),this.blobUrl&&(URL.revokeObjectURL(this.blobUrl),this.blobUrl=void 0),this.disconnectAudioNodes();let e=this.gainNode?this.gainNode.gain.value:1;return await this.reopenCtx(),this.chaimu.audioContext&&(this.initAudioBooster(),this.volume=e),this}finally{this.isClearing=!1,this.clearingPromise=void 0}})(),this.clearingPromise}async start(){if(!this.chaimu.audioContext)throw Error(`No audio context available`);if(!this.audioElement)throw Error(`Audio element is missing`);return this.isClearing&&this.clearingPromise&&(i.log(`The other cleaner is still running, waiting...`),await this.clearingPromise),i.log(`starting audio via HTMLAudioElement`),await this.play(),this.chaimu.video&&(this.audioElement.currentTime=this.chaimu.video.currentTime,this.audioElement.playbackRate=this.chaimu.video.playbackRate),this.audioElement.play().catch(e=>i.log(`[ChaimuPlayer] Play audioElement failed:`,e)),this}async pause(){if(!this.chaimu.audioContext)throw Error(`No audio context available`);return this.audioElement&&this.audioElement.pause(),this.chaimu.audioContext.state===`running`&&await this.chaimu.audioContext.suspend(),this}async play(){if(!this.chaimu.audioContext)throw Error(`No audio context available`);return await this.chaimu.audioContext.resume(),this}set src(e){this._src=e}get src(){return this._src}get currentSrc(){return this._src}set volume(e){this.gainNode&&(this.gainNode.gain.value=e)}get volume(){return this.gainNode?this.gainNode.gain.value:0}set playbackRate(e){this.audioElement&&(this.audioElement.playbackRate=e)}get playbackRate(){return this.audioElement?this.audioElement.playbackRate:this.chaimu.video?.playbackRate??1}get currentTime(){return this.chaimu.video?.currentTime??0}}class u{_debug=!1;audioContext;player;video;fetchFn;fetchOpts;constructor({url:e,video:t,debug:n=!1,fetchFn:i=r.fetchFn,fetchOpts:a={},preferAudio:s=!1}){this._debug=r.debug=n,this.fetchFn=i,this.fetchOpts=a,this.audioContext=o(),this.player=this.audioContext&&!s?new l(this,e):new c(this,e),this.video=t}async init(){await this.player.init(),this.video&&!this.video.paused&&this.player.lipSync(`play`),this.player.addVideoEvents()}set debug(e){this._debug=r.debug=e}get debug(){return this._debug}}},"./node_modules/lit-html/lit-html.js":(e,t,n)=>{"use strict";n.d(t,{JW:()=>T,XX:()=>U,qy:()=>w});let r=globalThis,i=r.trustedTypes,a=i?i.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,o=`$lit$`,s=`lit$${Math.random().toFixed(9).slice(2)}$`,c=`?`+s,l=`<${c}>`,u=document,d=()=>u.createComment(``),f=e=>e===null||typeof e!=`object`&&typeof e!=`function`,p=Array.isArray,m=e=>p(e)||typeof e?.[Symbol.iterator]==`function`,h=`[ \f\r]`,g=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,_=/-->/g,v=/>/g,y=RegExp(`>|${h}(?:([^\\s"'>=/]+)(${h}*=${h}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),b=/'/g,x=/"/g,S=/^(?:script|style|textarea|title)$/i,C=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),w=C(1),T=C(2),E=C(3),D=Symbol.for(`lit-noChange`),O=Symbol.for(`lit-nothing`),k=new WeakMap,A=u.createTreeWalker(u,129);function j(e,t){if(!p(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return a===void 0?t:a.createHTML(t)}let M=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?``:t===3?``:``,c=g;for(let t=0;t`?(c=i??g,f=-1):d[1]===void 0?f=-2:(f=c.lastIndex-d[2].length,u=d[1],c=d[3]===void 0?y:d[3]===`"`?x:b):c===x||c===b?c=y:c===_||c===v?c=g:(c=y,i=void 0);let m=c===y&&e[t+1].startsWith(`/>`)?` `:``;a+=c===g?n+l:f>=0?(r.push(u),n.slice(0,f)+o+n.slice(f)+s+m):n+s+(f===-2?t:m)}return[j(e,a+(e[n]||``)+(t===2?``:t===3?``:``)),r]};class N{constructor({strings:e,_$litType$:t},n){let r;this.parts=[];let a=0,l=0,u=e.length-1,f=this.parts,[p,m]=M(e,t);if(this.el=N.createElement(p,n),A.currentNode=this.el.content,t===2||t===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(r=A.nextNode())!==null&&f.length0){r.textContent=i?i.emptyScript:``;for(let n=0;n2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=O}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=P(this,e,t,0),a=!f(e)||e!==this._$AH&&e!==D,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new I(t.insertBefore(d(),e),e,void 0,n??{})}return i._$AI(e),i}},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(e){var t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},window.cancelIdleCallback=window.cancelIdleCallback||function(e){clearTimeout(e)}},"./src/audioDownloader/iframe.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{q:()=>u});var i=n(`./src/utils/debug.ts`),a=n(`./src/utils/iframeConnector.ts`),o=n(`./src/audioDownloader/shared.ts`),s=n(`./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/iframe.ts`),c=e([a,s]);[a,s]=c.then?(await c)():c;let l=async({data:e})=>{if(e?.messageDirection===`request`)try{switch(e.messageType){case`get-download-audio-data-in-iframe`:await(0,s.H)(e.payload);break;default:i.A.log(`NOT IMPLEMENTED: ${e.messageType}`,e.payload)}}catch(e){console.error(`[VOT] Main world bridge`,{error:e})}};function u(){return(0,a.Io)(o.D5,l)}r()}catch(e){r(e)}})},"./src/audioDownloader/index.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{I:()=>f});var i=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/utils/debug.ts`),s=n(`./src/audioDownloader/strategies/index.ts`),c=n(`./src/audioDownloader/strategies/utils.ts`),l=e([s,c]);[s,c]=l.then?(await l)():l;async function u({audioDownloader:e,translationId:t,videoId:n,signal:r}){let i=await s.W[e.strategy]({videoId:n,returnByParts:!0,signal:r});if(!i)throw Error(`Audio downloader. Can not get audio data`);o.A.log(`Audio downloader. Url found`,{audioDownloadType:e.strategy});let{getMediaBuffers:a,mediaPartsLength:c,fileId:l}=i;if(c<2){let{value:r}=await a().next();if(!r)throw Error(`Audio downloader. Empty audio`);e.onDownloadedAudio.dispatch(t,{videoId:n,fileId:l,audioData:r});return}let u=0;for await(let r of a()){if(!r)throw Error(`Audio downloader. Empty audio`);e.onDownloadedPartialAudio.dispatch(t,{videoId:n,fileId:l,audioData:r,version:1,index:u,amount:c}),u++}}async function d({data:e}){try{if(e?.messageDirection!==`request`)return;switch(e.messageType){case`get-download-audio-data-in-main-world`:await(0,c.hy)(`get-download-audio-data-in-iframe`,e);break}}catch(e){console.error(`[VOT] Main world bridge`,{error:e})}}class f{onDownloadedAudio=new a.Z;onDownloadedPartialAudio=new a.Z;onDownloadAudioError=new a.Z;strategy;constructor(e=i.J.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME){this.strategy=e,o.A.log(`Audio downloader created`,{strategy:e})}async runAudioDownload(e,t,n){window.addEventListener(`message`,d);try{await u({audioDownloader:this,translationId:t,videoId:e,signal:n}),o.A.log(`Audio downloader. Audio download finished`,{videoId:e})}catch(t){console.error(`Audio downloader. Failed to download audio`,t),this.onDownloadAudioError.dispatch(e)}window.removeEventListener(`message`,d)}addEventListener(e,t){switch(e){case`downloadedAudio`:this.onDownloadedAudio.addListener(t);break;case`downloadedPartialAudio`:this.onDownloadedPartialAudio.addListener(t);break;case`downloadAudioError`:this.onDownloadAudioError.addListener(t);break}return this}removeEventListener(e,t){switch(e){case`downloadedAudio`:this.onDownloadedAudio.removeListener(t);break;case`downloadedPartialAudio`:this.onDownloadedPartialAudio.removeListener(t);break;case`downloadAudioError`:this.onDownloadAudioError.removeListener(t);break}return this}}r()}catch(e){r(e)}})},"./src/audioDownloader/shared.ts":(e,t,n)=>{"use strict";n.d(t,{Aj:()=>s,D5:()=>a,RZ:()=>m,SZ:()=>h,cP:()=>d,ds:()=>u,kV:()=>c,ov:()=>o,pr:()=>i,rh:()=>f,sU:()=>l,yA:()=>p});var r=n(`./node_modules/@vot.js/shared/dist/index.js`);let i=`vot_iframe_player`,a=`service`,o=`www.youtube.com`,s=r.$W.minChunkSize,c=.9,l=[6e4,8e4,15e4,33e4,46e4],u=15e3,d=.9,f=e=>typeof e==`string`?e:e.url;function p(e){let t=new Uint8Array([120,0]);if(typeof e==`string`)return{body:t,cache:`no-store`,credentials:`include`,method:`POST`};let{headers:n,cache:r,credentials:i,integrity:a,keepalive:o,method:s,mode:c,redirect:l,referrer:u,referrerPolicy:d}=e,f=[...n.entries()];return{body:t,cache:r,credentials:i,headersEntries:f,integrity:a,keepalive:o,method:s,mode:c,redirect:l,referrer:u,referrerPolicy:d}}function m(e){let{headersEntries:t,...n}=e,r=new Headers(t);return{...n,headers:r}}function h(e){let{ok:t,redirected:n,status:r,statusText:i,type:a,url:o}=e;return{ok:t,redirected:n,status:r,statusText:i,type:a,url:o}}},"./src/audioDownloader/strategies/index.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{W:()=>s});var i=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),a=n(`./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/index.ts`),o=e([a]);a=(o.then?(await o)():o)[0];let s={[i.J.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME]:a.$};r()}catch(e){r(e)}})},"./src/audioDownloader/strategies/utils.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{Lm:()=>f,bB:()=>u,hy:()=>m,iz:()=>p,qk:()=>h});var i=n(`./src/utils/iframeConnector.ts`),a=n(`./src/audioDownloader/shared.ts`),o=e([i]);i=(o.then?(await o)():o)[0];let s=null;function c(e){if(e<1)throw Error(`Audio downloader. WEB API. contentLength must be at least 1`);let t=Math.round(e*a.kV),n=[],r=[],i=0,o=0,s=0,c=Math.min(a.sU[o],e);for(;c=a.Aj&&(n.push(r),r=[],i=0),oe+t.byteLength,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n}async function m(e,t){let{videoId:n}=t.payload,r=`https://${a.ov}/embed/${n}?autoplay=0&mute=1`;try{let n=await(0,i.IA)(s,r,a.pr,a.D5);if(!(0,i.yB)(a.pr))throw Error(`Audio downloader. WEB API. Service iframe deleted`);n.contentWindow?.postMessage({messageId:(0,i.Ok)(),messageType:e,messageDirection:`request`,payload:t,error:t.error},`*`)}catch(e){t.error=e,t.messageDirection=`response`,window.postMessage(t,`*`)}}function h(e,t,n){return JSON.stringify({downloadType:e,itag:t,minChunkSize:a.Aj,fileSize:n})}r()}catch(e){r(e)}})},"./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/consts.ts":(e,t,n)=>{"use strict";n.d(t,{Cp:()=>r,Vf:()=>a,kX:()=>i,l4:()=>o,su:()=>s});let r=`Audio downloader. WEB API. Can not get getGeneratingAudioUrlsDataFromIframe due to timeout`,i=`Audio downloader. WEB API. Incorrect response on fetch media url`,a=`Audio downloader. WEB API. Can not fetch media url`,o=`Audio downloader. WEB API. Can not get array buffer from media url`,s=new TextDecoder(`ascii`)},"./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/helpers.ts":(e,t,n)=>{"use strict";n.d(t,{DA:()=>c,ay:()=>o,eN:()=>s});var r=n(`./src/audioDownloader/shared.ts`),i=n(`./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/consts.ts`);let a=1;function o(e,{start:t,end:n}){let r=new URL(e);return r.searchParams.set(`range`,`${t}-${n}`),r.searchParams.set(`rn`,String(a++)),r.searchParams.delete(`ump`),r.toString()}function s(e,{start:t,end:n}){let i=n-t;return i>r.ds&&e.byteLengthr.cP}let c=e=>i.su.decode(e).match(/https:\/\/.*$/)?.[0]},"./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/iframe.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{H:()=>h});var i=n(`./node_modules/@vot.js/ext/dist/helpers/youtube.js`),a=n(`./src/utils/debug.ts`),o=n(`./src/utils/utils.ts`),s=n(`./src/audioDownloader/shared.ts`),c=e([o]);o=(c.then?(await c)():c)[0];let l=``,u=()=>i.A.getPlayerResponse()?.streamingData?.adaptiveFormats;async function d(e,t){if(!e.includes(`googlevideo.com/videoplayback`)||typeof t==`string`)return!1;try{let e=t.clone().body?.getReader();if(!e)return!1;let n=0;for(;;){let{done:t,value:r}=await e.read();if(t)break;if(n+=r.length,n>2)return!0}}catch{}return!1}function f(){let e=u();if(!e?.length){let t=e?`Empty adaptive formats`:`Cannot get adaptive formats`;throw Error(`Audio downloader. WEB API. ${t}`)}let t=e.filter(({audioQuality:e,mimeType:t})=>e||t?.includes(`audio`));if(!t.length)throw Error(`Audio downloader. WEB API. No audio adaptive formats`);let n=t.filter(({itag:e})=>e===251).sort(({contentLength:e},{contentLength:t})=>e&&t?Number.parseInt(e)-Number.parseInt(t):-1);return n.at(-1)??t[0]}let p=async()=>(await(0,o.UV)(()=>!!i.A.getPlayer(),1e4),i.A.getPlayer()),m=async e=>{let t=await p();if(e.messageId!==l)throw Error(`Audio downloader. Download started for another video while getting player`);if(!t?.loadVideoById)throw Error(`Audio downloader. There is no player.loadVideoById in iframe`);t.loadVideoById(e.payload.videoId),t.pauseVideo?.(),t.mute?.(),setTimeout(()=>{if(e.messageId!==l){console.error(`Audio Downloader. Download started for another video while waiting to repause video`);return}if(!t){console.error(`[Critical] Audio Downloader. Player not found in iframe after timeout`);return}t.pauseVideo?.()},1e3)};async function h(e){try{l=e.messageId,a.A.log(`getDownloadAudioData`,e);let t=unsafeWindow.fetch;unsafeWindow.fetch=async(n,r)=>{n instanceof URL&&(n=n.toString());let i=(0,s.rh)(n);if(await d(i,n))return window.parent.postMessage({...e,messageDirection:`response`,error:`Audio downloader. Detected encoded request.`},`*`),unsafeWindow.fetch=t,t(n,r);let a=await t(n,r);return e.messageId===l?(i.includes(`&itag=251&`)&&(unsafeWindow.fetch=t,window.parent.postMessage({...e,messageDirection:`response`,payload:{requestInfo:i,requestInit:r||(0,s.yA)(n),adaptiveFormat:f(),itag:251}},`*`)),a):(unsafeWindow.fetch=t,a)},await m(e)}catch(t){window.parent.postMessage({...e,messageDirection:`response`,error:t},`*`)}}r()}catch(e){r(e)}})},"./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/index.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{$:()=>y});var i=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),a=n(`./src/utils/debug.ts`),o=n(`./src/utils/gm.ts`),s=n(`./src/utils/iframeConnector.ts`),c=n(`./src/utils/utils.ts`),l=n(`./src/audioDownloader/shared.ts`),u=n(`./src/audioDownloader/strategies/utils.ts`),d=n(`./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/consts.ts`),f=n(`./src/audioDownloader/strategies/webApiGetAllGeneratingUrlsData/helpers.ts`),p=e([o,s,c,u]);[o,s,c,u]=p.then?(await p)():p;let m=i.J.WEB_API_GET_ALL_GENERATING_URLS_DATA_FROM_IFRAME,h=e=>(0,s.hG)(`get-download-audio-data-in-main-world`,e);async function g(e){try{return await Promise.race([h({videoId:e}),(0,c.wR)(2e4,d.Cp)])}catch(e){let t=e instanceof Error&&e.message===d.Cp;throw a.A.log(`getGeneratingAudioUrlsDataFromIframe error`,e),Error(t?d.Cp:`Audio downloader. WEB API. Failed to get audio data`)}}async function _({mediaUrl:e,chunkRange:t,requestInit:n,signal:r,isUrlChanged:i=!1}){let s=(0,f.ay)(e,t),c;try{if(c=await(0,o.G3)(s,{...n,signal:r}),!c.ok){let e=(0,l.SZ)(c);throw console.error(d.kX,e),Error(d.kX)}}catch(e){throw e instanceof Error&&e.message===d.kX?e:(console.error(d.Vf,{mediaUrl:s,error:e}),Error(d.Vf))}let u;try{u=await c.arrayBuffer()}catch(e){throw console.error(d.l4,{mediaUrl:s,error:e}),Error(d.l4)}if(a.A.log(`isChunkLengthAcceptable`,(0,f.eN)(u,t),u.byteLength,t),(0,f.eN)(u,t))return{media:u,url:i?e:null,isAcceptableLast:!1};let p=(0,f.DA)(u);if(a.A.log(`redirectedUrl`,p),p)return _({mediaUrl:p,chunkRange:t,requestInit:n,signal:r,isUrlChanged:!0});if(!t.mustExist)return{media:u,url:null,isAcceptableLast:!0};throw Error(`Audio downloader. WEB API. Can not get redirected media url ${s}`)}async function v(e,t,n,r){let i=e,a=[],o=!1;for(let e of n){let n=await _({mediaUrl:i,chunkRange:e,requestInit:t,signal:r});if(n.url&&(i=n.url),a.push(n.media),o=n.isAcceptableLast,o)break}return{media:(0,u.iz)(a),url:i,isAcceptableLast:o}}async function y({videoId:e,returnByParts:t=!1,signal:n}){let{requestInit:r,requestInfo:i,adaptiveFormat:a,itag:o}=await g(e);if(!i)throw Error(`Audio downloader. WEB API. Can not get requestInfo`);let s=(0,l.rh)(i),c=(0,l.yA)(i),d=(0,l.RZ)(c),f=r||d;return{fileId:(0,u.qk)(m,o,a.contentLength),mediaPartsLength:t?(0,u.bB)(a).length:1,async*getMediaBuffers(){if(t){let e=(0,u.bB)(a);for(let t of e){let{media:e,url:r,isAcceptableLast:i}=await v(s,f,t,n);if(r&&(s=r),yield e,i)break}}else{let e=(0,u.Lm)(a),{media:t}=await v(s,f,e,n);yield t}}}}r()}catch(e){r(e)}})},"./src/config/config.js":(e,t,n)=>{"use strict";n.d(t,{Ek:()=>p,JD:()=>m,K2:()=>v,Pm:()=>a,T8:()=>h,Wl:()=>y,cL:()=>u,hx:()=>f,k$:()=>s,mE:()=>_,px:()=>g,qU:()=>x,r4:()=>S,rl:()=>r,se:()=>i,sl:()=>c,tZ:()=>o,vZ:()=>b,xW:()=>l});let r=`api.browser.yandex.ru`,i=`media-proxy.toil.cc/v1/proxy/m3u8`,a=`vot-worker.toil.cc`,o=`https://vot.toil.cc/v1`,s=`https://translate.toil.cc/v2`,c=`https://rust-server-531j.onrender.com/detect`,l=`https://t2mc.toil.cc`,u=`https://avatars.mds.yandex.net/get-yapic`,d=`ilyhalight/voice-over-translation`,f=`https://raw.githubusercontent.com/${d}`,p=`https://github.com/${d}`,m=15,h=900,g=5,_=`yandexbrowser`,v=`yandexbrowser`,y=[`Tampermonkey`,`Violentmonkey`],b=[`UA`,`LV`,`LT`],x=1e3,S=`2025-05-09`},"./src/core/auth.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{L:()=>c});var i=n(`./src/utils/storage.ts`),a=e([i]);i=(a.then?(await a)():a)[0];async function o(){let{access_token:e,expires_in:t}=Object.fromEntries(new URLSearchParams(window.location.hash.slice(1)));if(!e||!t)throw Error(`[VOT] Invalid token response`);let n=parseInt(t);if(Number.isNaN(n))throw Error(`[VOT] Invalid expires_in value`);await i.d.set(`account`,{token:e,expires:Date.now()+n*1e3,username:void 0,avatarId:void 0})}async function s(){let{avatar_id:e,username:t}=_userData;if(!e||!t)throw Error(`[VOT] Invalid user data`);let n=await i.d.get(`account`);if(!n)throw Error(`[VOT] No account data found`);await i.d.set(`account`,{...n,username:t,avatarId:e})}async function c(){if(window.location.pathname===`/auth/callback`)return await o();if(window.location.pathname===`/my/profile`)return await s()}r()}catch(e){r(e)}})},"./src/core/cacheManager.ts":(e,t,n)=>{"use strict";n.d(t,{G:()=>r});class r{cache;constructor(){this.cache=new Map}get(e){return this.cache.get(e)}set(e,t){return this.cache.set(e,t),this}delete(e){return this.cache.delete(e),this}getTranslation(e){let t=this.get(e);return t?t.translation:void 0}setTranslation(e,t){let n=this.get(e)||{};n.translation=t,this.set(e,n)}getSubtitles(e){let t=this.get(e);return t?t.subtitles:void 0}setSubtitles(e,t){let n=this.get(e)||{};n.subtitles=t,this.set(e,n)}deleteSubtitles(e){let t=this.get(e);t&&(t.subtitles=void 0,this.set(e,t))}}},"./src/core/eventImpl.ts":(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});class r{listeners;constructor(){this.listeners=new Set}addListener(e){if(this.listeners.has(e))throw Error(`[VOT] The listener has already been added.`);this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}dispatch(...e){for(let t of this.listeners)try{t(...e)}catch(e){console.error(`[VOT]`,e)}}clear(){this.listeners.clear()}}},"./src/core/translationHandler.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{F:()=>f});var i=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),a=n(`./src/audioDownloader/index.ts`),o=n(`./src/localization/localizationProvider.ts`),s=n(`./src/utils/debug.ts`),c=n(`./src/utils/localization.ts`),l=n(`./src/utils/utils.ts`),u=n(`./src/utils/VOTLocalizedError.js`),d=e([a,o,c,l,u]);[a,o,c,l,u]=d.then?(await d)():d;class f{videoHandler;audioDownloader;downloading;constructor(e){this.videoHandler=e,this.audioDownloader=new a.I,this.downloading=!1,this.audioDownloader.addEventListener(`downloadedAudio`,async(e,t)=>{if(s.A.log(`downloadedAudio`,t),!this.downloading){s.A.log(`skip downloadedAudio`);return}let{videoId:n,fileId:r,audioData:i}=t,a=this.getCanonicalUrl(n);try{await this.videoHandler.votClient.requestVtransAudio(a,e,{audioFile:i,fileId:r})}catch{}this.downloading=!1}).addEventListener(`downloadedPartialAudio`,async(e,t)=>{if(s.A.log(`downloadedPartialAudio`,t),!this.downloading){s.A.log(`skip downloadedPartialAudio`);return}let{audioData:n,fileId:r,videoId:i,amount:a,version:o,index:c}=t,l=this.getCanonicalUrl(i);try{await this.videoHandler.votClient.requestVtransAudio(l,e,{audioFile:n,chunkId:c},{audioPartsLength:a,fileId:r,version:o})}catch{this.downloading=!1}c===a-1&&(this.downloading=!1)}).addEventListener(`downloadAudioError`,async e=>{if(!this.downloading){s.A.log(`skip downloadAudioError`);return}s.A.log(`Failed to download audio ${e}`);let t=this.getCanonicalUrl(e);await this.videoHandler.votClient.requestVtransFailAudio(t),this.downloading=!1})}getCanonicalUrl(e){return`https://youtu.be/${e}`}isWaitingStreamRes(e){return!!e.message}async translateVideoImpl(e,t,n,r=null,a=!1,u=new AbortController().signal){clearTimeout(this.videoHandler.autoRetry),this.downloading=!1,s.A.log(e,`Translate video (requestLang: ${t}, responseLang: ${n})`);try{if(u.aborted)throw Error(`AbortError`);let d=this.videoHandler.isLivelyVoiceAllowed()&&this.videoHandler.data?.useLivelyVoice,f=await this.videoHandler.votClient.translateVideo({videoData:e,requestLang:t,responseLang:n,translationHelp:r,extraOpts:{useLivelyVoice:d,videoTitle:this.videoHandler.videoData?.title},shouldSendFailedAudio:a});if(s.A.log(`Translate video result`,f),u.aborted)throw Error(`AbortError`);if(f.translated&&f.remainingTime<1)return s.A.log(`Video translation finished with this data: `,f),f;let p=f.message??o.j.get(`translationTakeFewMinutes`);if(await this.videoHandler.updateTranslationErrorMsg(f.remainingTime>0?(0,c.o)(f.remainingTime):p),f.status===i.v.AUDIO_REQUESTED&&this.videoHandler.isYouTubeHosts()){if(s.A.log(`Start audio download`),this.downloading=!0,await this.audioDownloader.runAudioDownload(e.videoId,f.translationId,u),s.A.log(`waiting downloading finish`),await(0,l.UV)(()=>!this.downloading||u.aborted,15e3),u.aborted)throw s.A.log(`aborted after audio downloader vtrans`),Error(`AbortError`);return await this.translateVideoImpl(e,t,n,r,!0,u)}}catch(r){if(r.message===`AbortError`)return s.A.log(`aborted video translation`),null;await this.videoHandler.updateTranslationErrorMsg(r.data?.message??r),console.error(`[VOT]`,r);let i=`${e.videoId}_${t}_${n}_${this.videoHandler.data?.useLivelyVoice}`;return this.videoHandler.cacheManager.setTranslation(i,{error:r}),null}return new Promise(i=>{this.videoHandler.autoRetry=setTimeout(async()=>{i(await this.translateVideoImpl(e,t,n,r,!0,u))},2e4)})}async translateStreamImpl(e,t,n,r=new AbortController().signal){clearTimeout(this.videoHandler.autoRetry),s.A.log(e,`Translate stream (requestLang: ${t}, responseLang: ${n})`);try{if(r.aborted)throw Error(`AbortError`);let i=await this.videoHandler.votClient.translateStream({videoData:e,requestLang:t,responseLang:n});if(r.aborted)throw Error(`AbortError`);if(s.A.log(`Translate stream result`,i),!i.translated&&i.interval===10)return await this.videoHandler.updateTranslationErrorMsg(o.j.get(`translationTakeFewMinutes`)),new Promise(a=>{this.videoHandler.autoRetry=setTimeout(async()=>{a(await this.translateStreamImpl(e,t,n,r))},i.interval*1e3)});if(this.isWaitingStreamRes(i))throw s.A.log(`Stream translation aborted! Message: ${i.message}`),new u.n(`streamNoConnectionToServer`);if(!i.result)throw s.A.log(`Failed to find translation result! Data:`,i),new u.n(`audioNotReceived`);return s.A.log(`Stream translated successfully. Running...`,i),this.videoHandler.streamPing=setInterval(async()=>{s.A.log(`Ping stream translation`,i.pingId),this.videoHandler.votClient.pingStream({pingId:i.pingId})},i.interval*1e3),i}catch(e){return e.message===`AbortError`?(s.A.log(`aborted stream translation`),null):(console.error(`[VOT] Failed to translate stream`,e),await this.videoHandler.updateTranslationErrorMsg(e.data?.message??e),null)}}}r()}catch(e){r(e)}})},"./src/core/videoManager.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{k:()=>h});var i=n(`./node_modules/@vot.js/ext/dist/utils/videoData.js`),a=n(`./node_modules/@vot.js/shared/dist/data/config.js`),o=n(`./node_modules/@vot.js/shared/dist/data/consts.js`),s=n(`./node_modules/@vot.js/ext/dist/helpers/youtube.js`),c=n(`./src/localization/localizationProvider.ts`),l=n(`./src/utils/VOTLocalizedError.js`),u=n(`./src/utils/debug.ts`),d=n(`./src/utils/gm.ts`),f=n(`./src/utils/translateApis.ts`),p=n(`./src/utils/utils.ts`),m=e([c,l,d,f,p]);[c,l,d,f,p]=m.then?(await m)():m;class h{videoHandler;constructor(e){this.videoHandler=e}async getVideoData(){let{duration:e,url:t,videoId:n,host:r,title:s,translationHelp:l=null,localizedTitle:m,description:h,detectedLanguage:g,subtitles:_,isStream:v=!1}=await(0,i.o4)(this.videoHandler.site,{fetchFn:d.G3,video:this.videoHandler.video,language:c.j.lang}),y=g??this.videoHandler.translateFromLang;if(!g&&s){let e=(0,p.X5)(s,h);u.A.log(`Detecting language text: ${e}`);let t=await(0,f.o0)(e);o.xm.includes(t)&&(y=t)}let b={translationHelp:l,isStream:v,duration:e||this.videoHandler.video?.duration||a.A.defaultDuration,videoId:n,url:t,host:r,detectedLanguage:y,responseLanguage:this.videoHandler.translateToLang,subtitles:_,title:s,localizedTitle:m,downloadTitle:m??s??n};if(console.log(`[VOT] Detected language:`,y),[`rutube`,`ok.ru`,`mail_ru`].includes(this.videoHandler.site.host))b.detectedLanguage=`ru`;else if(this.videoHandler.site.host===`youku`)b.detectedLanguage=`zh`;else if(this.videoHandler.site.host===`vk`){let e=document.getElementsByTagName(`track`)?.[0]?.srclang;b.detectedLanguage=e||`auto`}else this.videoHandler.site.host===`weverse`&&(b.detectedLanguage=`ko`);return b}videoValidator(){if(!this.videoHandler.videoData||!this.videoHandler.data)throw new l.n(`VOTNoVideoIDFound`);if(u.A.log(`VideoValidator videoData: `,this.videoHandler.videoData),this.videoHandler.data.enabledDontTranslateLanguages&&this.videoHandler.data.dontTranslateLanguages?.includes(this.videoHandler.videoData.detectedLanguage))throw new l.n(`VOTDisableFromYourLang`);if(this.videoHandler.site.host===`twitch`&&this.videoHandler.videoData.isStream)throw new l.n(`VOTStreamNotAvailable`);if(!this.videoHandler.videoData.isStream&&this.videoHandler.videoData.duration>14400)throw new l.n(`VOTVideoIsTooLong`);return!0}getVideoVolume(){let e=this.videoHandler.video?.volume;return[`youtube`,`googledrive`].includes(this.videoHandler.site.host)&&(e=s.A.getVolume()??e),e}setVideoVolume(e){if(![`youtube`,`googledrive`].includes(this.videoHandler.site.host))return this.videoHandler.video.volume=e,this;let t=s.A.setVolume(e);return t||(this.videoHandler.video.volume=e),this}isMuted(){return[`youtube`,`googledrive`].includes(this.videoHandler.site.host)?s.A.isMuted():this.videoHandler.video?.muted}syncVideoVolumeSlider(){let e=this.isMuted()?0:this.getVideoVolume()*100,t=Math.round(e);return this.videoHandler.data?.syncVolume&&(this.videoHandler.tempOriginalVolume=Number(t)),this.videoHandler.uiManager.votOverlayView?.isInitialized()&&(this.videoHandler.uiManager.votOverlayView.videoVolumeSlider.value=t),this}setSelectMenuValues(e,t){if(!this.videoHandler.uiManager.votOverlayView?.isInitialized()||!this.videoHandler.videoData)return this;console.log(`[VOT] Set translation from ${e} to ${t}`),this.videoHandler.uiManager.votOverlayView.languagePairSelect.fromSelect.selectTitle=c.j.get(`langs.${e}`),this.videoHandler.uiManager.votOverlayView.languagePairSelect.toSelect.selectTitle=c.j.get(`langs.${t}`),this.videoHandler.uiManager.votOverlayView.languagePairSelect.fromSelect.setSelectedValue(e),this.videoHandler.uiManager.votOverlayView.languagePairSelect.toSelect.setSelectedValue(t),this.videoHandler.videoData.detectedLanguage=e,this.videoHandler.videoData.responseLanguage=t}}r()}catch(e){r(e)}})},"./src/index.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{k:()=>O});var i=n(`./node_modules/@vot.js/ext/dist/index.js`),a=n(`./node_modules/@vot.js/ext/dist/helpers/youtube.js`),o=n(`./node_modules/@vot.js/ext/dist/utils/videoData.js`),s=n(`./node_modules/chaimu/dist/index.js`),c=n(`./src/audioDownloader/iframe.ts`),l=n(`./src/config/config.js`),u=n(`./src/core/auth.ts`),d=n(`./src/core/cacheManager.ts`),f=n(`./src/core/translationHandler.ts`),p=n(`./src/core/videoManager.ts`),m=n(`./src/localization/localizationProvider.ts`),h=n(`./src/subtitles.js`),g=n(`./src/ui/components/hotkeyButton.ts`),_=n(`./src/ui/manager.ts`),v=n(`./src/utils/debug.ts`),y=n(`./src/utils/gm.ts`),b=n(`./src/utils/iframeConnector.ts`),x=n(`./src/utils/storage.ts`),S=n(`./src/utils/translateApis.ts`),C=n(`./src/utils/utils.ts`),w=n(`./src/utils/VideoObserver.js`),T=n(`./src/utils/VOTLocalizedError.js`),E=n(`./src/utils/volume.ts`),D=e([i,c,u,f,p,m,h,g,_,y,b,x,S,C,T]);[i,c,u,f,p,m,h,g,_,y,b,x,S,C,T]=D.then?(await D)():D;let O;class k{translateFromLang=`auto`;translateToLang=C.HD;timer;data;videoData;firstPlay=!0;audioContext=(0,s.GZ)();hls;votClient;audioPlayer;abortController;actionsAbortController;cacheManager;downloadTranslationUrl=null;autoRetry;streamPing;votOpts;volumeOnStart;tempOriginalVolume;tempVolume;firstSyncVolume=!0;longWaitingResCount=0;subtitles=[];constructor(e,t,n){v.A.log(`[VideoHandler] add video:`,e,`container:`,t,this),this.video=e,this.container=t,this.site=n,this.abortController=new AbortController,this.actionsAbortController=new AbortController,this.uiManager=new _.o({root:this.container,portalContainer:this.getPortalContainer(),tooltipLayoutRoot:this.getTooltipLayoutRoot(),data:this.data,videoHandler:this}),this.translationHandler=new f.F(this),this.videoManager=new p.k(this),this.cacheManager=new d.G}getPortalContainer(){return this.site.host===`youtube`&&this.site.additionalData!==`mobile`?this.container.parentElement:this.container}getTooltipLayoutRoot(){switch(this.site.host){case`kickstarter`:return document.getElementById(`react-project-header`);case`custom`:return;default:return this.container}}getEventContainer(){return this.site.eventSelector?this.site.host===`twitter`?this.container.closest(this.site.eventSelector):document.querySelector(this.site.eventSelector):this.container}async autoTranslate(){if(this.firstPlay&&this.data.autoTranslate&&this.videoData.videoId){this.firstPlay=!1;try{this.videoManager.videoValidator(),await this.uiManager.handleTranslationBtnClick()}catch(e){console.error(`[VOT]`,e);return}}}getPreferAudio(){return!this.audioContext||!this.data.newAudioPlayer||this.videoData.isStream?!0:this.data.newAudioPlayer&&!this.data.onlyBypassMediaCSP?!1:!this.site.needBypassCSP}createPlayer(){let e=this.getPreferAudio();return v.A.log(`preferAudio:`,e),this.audioPlayer=new s.Ay({video:this.video,debug:!1,fetchFn:y.G3,fetchOpts:{timeout:0},preferAudio:e}),this}async init(){if(!this.initialized){if(this.data=await x.d.getValues({autoTranslate:!1,dontTranslateLanguages:[C.HD],enabledDontTranslateLanguages:!0,enabledAutoVolume:!0,autoVolume:l.JD,buttonPos:`default`,showVideoSlider:!0,syncVolume:!1,downloadWithName:y.yx,sendNotifyOnComplete:!1,subtitlesMaxLength:300,highlightWords:!1,subtitlesFontSize:20,subtitlesOpacity:20,subtitlesDownloadFormat:`srt`,responseLanguage:C.HD,defaultVolume:100,onlyBypassMediaCSP:Number(!!this.audioContext),newAudioPlayer:Number(!!this.audioContext),showPiPButton:!1,translateAPIErrors:!0,translationService:l.mE,detectService:l.K2,translationHotkey:null,m3u8ProxyHost:l.se,proxyWorkerHost:l.Pm,translateProxyEnabled:0,translateProxyEnabledDefault:!0,audioBooster:!1,useLivelyVoice:!1,autoHideButtonDelay:l.qU,useAudioDownload:y.B0,compatVersion:``,account:{},localeHash:``,localeUpdatedAt:0}),this.data.compatVersion!==l.r4&&(this.data=await(0,x._)(this.data),await x.d.set(`compatVersion`,l.r4)),this.uiManager.data=this.data,this.tempVolume=this.data.defaultVolume,console.log(`[VOT] data from db: `,this.data),!this.data.translateProxyEnabled&&y.up&&(this.data.translateProxyEnabled=1),!O)try{let e=await(0,y.G3)(`https://speed.cloudflare.com/meta`,{timeout:7e3});({country:O}=await e.json())}catch(e){console.error(`[VOT] Error getting country:`,e)}l.vZ.includes(O)&&this.data.translateProxyEnabledDefault&&(this.data.translateProxyEnabled=2),v.A.log(`translateProxyEnabled`,this.data.translateProxyEnabled,this.data.translateProxyEnabledDefault),v.A.log(`Extension compatibility passed...`),this.initVOTClient(),this.uiManager.initUI(),this.uiManager.initUIEvents(),this.subtitlesWidget=new h.o(this.video,this.getPortalContainer(),this.site,this.uiManager.votOverlayView.votOverlayPortal,this.getTooltipLayoutRoot()),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.subtitlesWidget.setFontSize(this.data.subtitlesFontSize),this.subtitlesWidget.setOpacity(this.data.subtitlesOpacity),this.createPlayer(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??`ru`),this.translateToLang=this.data.responseLanguage??`ru`,this.initExtraEvents(),await this.autoTranslate(),this.initialized=!0}}initVOTClient(){return this.votOpts={fetchFn:y.G3,fetchOpts:{signal:this.actionsAbortController.signal},apiToken:this.data.account?.token,hostVOT:l.tZ,host:this.data.translateProxyEnabled?this.data.proxyWorkerHost:l.rl},this.votClient=new(this.data.translateProxyEnabled?i.Pu:i.Ay)(this.votOpts),this}transformBtn(e,t){return this.uiManager.transformBtn(e,t),this}hasActiveSource(){return!!(this.audioPlayer.player.src||this.hls?.url)}initExtraEvents(){let{signal:e}=this.abortController,t=(t,n,r)=>{t.addEventListener(n,r,{signal:e})},n=(e,n,r)=>{for(let i of n)t(e,i,r)};if(this.resizeObserver=new ResizeObserver(e=>{for(let t of e)this.uiManager.votOverlayView.votMenu.container.style.setProperty(`--vot-container-height`,`${t.contentRect.height}px`);let{position:t,direction:n}=this.uiManager.votOverlayView.calcButtonLayout(this.data?.buttonPos);this.uiManager.votOverlayView.updateButtonLayout(t,n)}),this.resizeObserver.observe(this.video),this.uiManager.votOverlayView.votMenu.container.style.setProperty(`--vot-container-height`,`${this.video.getBoundingClientRect().height}px`),[`youtube`,`googledrive`].includes(this.site.host)&&this.site.additionalData!==`mobile`){this.syncVolumeObserver=new MutationObserver(e=>{if(!(!this.audioPlayer.player.src||!this.data.syncVolume)){for(let t of e)if(t.type===`attributes`&&t.attributeName===`aria-valuenow`){if(this.firstSyncVolume){this.firstSyncVolume=!1;return}let e=this.isMuted()?0:this.getVideoVolume()*100,t=Math.round(e);this.data.defaultVolume=t,this.audioPlayer.player.volume=this.data.defaultVolume/100,this.syncVolumeWrapper(`video`,t)}}});let e=document.querySelector(`.ytp-volume-panel`);e&&this.syncVolumeObserver.observe(e,{attributes:!0,subtree:!0})}document.addEventListener(`click`,e=>{let t=e.target,n=this.uiManager.votOverlayView.votButton.container,r=this.uiManager.votOverlayView.votMenu.container,i=this.container,a=this.uiManager.votSettingsView.dialog.container,o=document.querySelector(`.vot-dialog-temp`),s=n.contains(t),c=r.contains(t),l=i.contains(t),u=a.contains(t),d=o?.contains(t)??!1;v.A.log(`[document click] ${s} ${c} ${l} ${u} ${d}`),!s&&!c&&!u&&!d&&(l||this.uiManager.votOverlayView.updateButtonOpacity(0),this.uiManager.votOverlayView.votMenu.hidden=!0)},{signal:e});let r=new Set;document.addEventListener(`keydown`,async e=>{if(e.repeat)return;r.add(e.code);let t=document.activeElement,n=[`input`,`textarea`].includes(t.tagName.toLowerCase())||t.isContentEditable;if(n)return;let i=(0,g._)(r);v.A.log(`combo: ${i}`),v.A.log(`this.data.translationHotkey: ${this.data.translationHotkey}`),i===this.data.translationHotkey&&await this.uiManager.handleTranslationBtnClick()},{signal:e}),document.addEventListener(`blur`,()=>{r.clear()}),document.addEventListener(`keyup`,e=>{r.delete(e.code)},{signal:e});let i=this.getEventContainer();i&&n(i,[`pointermove`,`pointerout`],this.resetTimer),t(this.uiManager.votOverlayView.votButton.container,`pointermove`,this.changeOpacityOnEvent),t(this.uiManager.votOverlayView.votMenu.container,`pointermove`,this.changeOpacityOnEvent),this.site.host!==`xvideos`&&t(document,`touchmove`,this.resetTimer),this.site.host===`youtube`&&(this.container.draggable=!1),t(this.video,`canplay`,async()=>{this.site.host===`rutube`&&this.video.src||await this.setCanPlay()}),t(this.video,`emptied`,async()=>{let e=await(0,o.jY)(this.site,{fetchFn:y.G3,video:this.video});this.video.src&&this.videoData&&e===this.videoData.videoId||(v.A.log(`lipsync mode is emptied`),this.videoData=void 0,this.stopTranslation())}),[`rutube`,`ok`].includes(this.site.host)||t(this.video,`volumechange`,()=>{this.syncVideoVolumeSlider()}),this.site.host===`youtube`&&!this.site.additionalData&&t(document,`yt-page-data-updated`,async()=>{v.A.log(`yt-page-data-updated`),window.location.pathname.includes(`/shorts/`)&&await this.setCanPlay()})}async setCanPlay(){let e=await(0,o.jY)(this.site,{fetchFn:y.G3,video:this.video});this.videoData&&e===this.videoData.videoId||(await this.handleSrcChanged(),await this.autoTranslate(),v.A.log(`lipsync mode is canplay`))}resetTimer=()=>{clearTimeout(this.timer),this.uiManager.votOverlayView.updateButtonOpacity(1),this.timer=setTimeout(()=>{this.uiManager.votOverlayView.updateButtonOpacity(0)},this.data.autoHideButtonDelay)};changeOpacityOnEvent=e=>{clearTimeout(this.timer),this.uiManager.votOverlayView.updateButtonOpacity(1),e.stopPropagation()};async changeSubtitlesLang(e){if(v.A.log(`[onchange] subtitles`,e),this.uiManager.votOverlayView.subtitlesSelect.setSelectedValue(e),e===`disabled`)this.subtitlesWidget.setContent(null),this.uiManager.votOverlayView.downloadSubtitlesButton.hidden=!0,this.yandexSubtitles=null;else{let t=this.subtitles.at(Number.parseInt(e));if(this.data.translateProxyEnabled===2&&t.url.startsWith(`https://brosubs.s3-private.mds.yandex.net/vtrans/`)){let e=t.url.replace(`https://brosubs.s3-private.mds.yandex.net/vtrans/`,``);t.url=`https://${this.data.proxyWorkerHost}/video-subtitles/subtitles-proxy/${e}`,console.log(`[VOT] Subs proxied via ${t.url}`)}this.yandexSubtitles=await h.I.fetchSubtitles(t),this.subtitlesWidget.setContent(this.yandexSubtitles,t.language),this.uiManager.votOverlayView.downloadSubtitlesButton.hidden=!1}}async updateSubtitlesLangSelect(){if(!this.subtitles||this.subtitles.length===0){let e=[{label:m.j.get(`VOTSubtitlesDisabled`),value:`disabled`,selected:!0,disabled:!1}];this.uiManager.votOverlayView.subtitlesSelect.updateItems(e),await this.changeSubtitlesLang(e[0].value);return}let e=[{label:m.j.get(`VOTSubtitlesDisabled`),value:`disabled`,selected:!0,disabled:!1},...this.subtitles.map((e,t)=>({label:(m.j.get(`langs.${e.language}`)??e.language.toUpperCase())+(e.translatedFromLanguage?` ${m.j.get(`VOTTranslatedFrom`)} ${m.j.get(`langs.${e.translatedFromLanguage}`)??e.translatedFromLanguage.toUpperCase()}`:``)+(e.source===`yandex`?``:`, ${window.location.hostname}`)+(e.isAutoGenerated?` (${m.j.get(`VOTAutogenerated`)})`:``),value:t,selected:!1,disabled:!1}))];this.uiManager.votOverlayView.subtitlesSelect.updateItems(e),await this.changeSubtitlesLang(e[0].value)}async loadSubtitles(){if(!this.videoData?.videoId){console.error(`[VOT] ${m.j.getDefault(`VOTNoVideoIDFound`)}`),this.subtitles=[];return}let e=`${this.videoData.videoId}_${this.videoData.detectedLanguage}_${this.videoData.responseLanguage}_${this.data.useLivelyVoice}`;try{let t=this.cacheManager.getSubtitles(e);t||(t=await h.I.getSubtitles(this.votClient,this.videoData),this.cacheManager.setSubtitles(e,t)),this.subtitles=t}catch(e){console.error(`[VOT] Failed to load subtitles:`,e),this.subtitles=[]}await this.updateSubtitlesLangSelect()}isLivelyVoiceAllowed(){return!(this.videoData.detectedLanguage!==`en`||this.videoData.responseLanguage!==`ru`||!this.data.account?.token)}getVideoVolume(){return this.videoManager.getVideoVolume()}setVideoVolume(e){return this.videoManager.setVideoVolume(e),this}isMuted(){return this.videoManager.isMuted()}syncVideoVolumeSlider(){this.videoManager.syncVideoVolumeSlider()}setSelectMenuValues(e,t){this.videoManager.setSelectMenuValues(e,t)}syncVolumeWrapper(e,t){let n=e===`translation`?this.uiManager.votOverlayView.videoVolumeSlider:this.uiManager.votOverlayView.translationVolumeSlider,r=(0,E.q)(e===`translation`?this.video:this.audioPlayer.player,t,n.value,e===`translation`?this.tempVolume:this.tempOriginalVolume);n.value=r,this.tempOriginalVolume=e===`translation`?r:t,this.tempVolume=e===`translation`?t:r}async getVideoData(){return await this.videoManager.getVideoData()}videoValidator(){return this.videoManager.videoValidator()}stopTranslate(){this.audioPlayer.player.removeVideoEvents(),this.audioPlayer.player.clear(),this.audioPlayer.player.src=void 0,v.A.log(`audioPlayer after stopTranslate`,this.audioPlayer),this.uiManager.votOverlayView.videoVolumeSlider.hidden=!0,this.uiManager.votOverlayView.translationVolumeSlider.hidden=!0,this.uiManager.votOverlayView.downloadTranslationButton.hidden=!0,this.downloadTranslationUrl=null,this.longWaitingResCount=0,this.transformBtn(`none`,m.j.get(`translateVideo`)),v.A.log(`Volume on start: ${this.volumeOnStart}`),this.volumeOnStart&&this.setVideoVolume(this.volumeOnStart),clearInterval(this.streamPing),clearTimeout(this.autoRetry),this.hls?.destroy(),this.firstSyncVolume=!0,this.actionsAbortController=new AbortController}async updateTranslationErrorMsg(e){let t=m.j.get(`translationTake`),n=m.j.lang;if(this.longWaitingResCount=e===m.j.get(`translationTakeAboutMinute`)?this.longWaitingResCount+1:0,v.A.log(`longWaitingResCount`,this.longWaitingResCount),this.longWaitingResCount>l.px&&(e=new T.n(`TranslationDelayed`)),v.A.log(`updateTranslationErrorMsg message`,e),e?.name===`VOTLocalizedError`)this.transformBtn(`error`,e.localizedMessage);else if(e instanceof Error)this.transformBtn(`error`,e?.message);else if(this.data.translateAPIErrors&&n!==`ru`&&!e?.includes(t)){this.uiManager.votOverlayView.votButton.loading=!0;let t=await(0,S.Tl)(e,`ru`,n);this.transformBtn(`error`,t)}else this.transformBtn(`error`,e);[`Подготавливаем перевод`,`Видео передано в обработку`,`Ожидаем перевод видео`,`Загружаем переведенное аудио`].includes(e)&&(this.uiManager.votOverlayView.votButton.loading=!0)}afterUpdateTranslation(e){let t=this.uiManager.votOverlayView.votButton.container.dataset.status===`success`;this.uiManager.votOverlayView.videoVolumeSlider.hidden=!this.data.showVideoSlider||!t,this.uiManager.votOverlayView.translationVolumeSlider.hidden=!t,this.data.enabledAutoVolume&&(this.uiManager.votOverlayView.videoVolumeSlider.value=this.data.autoVolume),this.videoData.isStream||(this.uiManager.votOverlayView.downloadTranslationButton.hidden=!1,this.downloadTranslationUrl=e),v.A.log(`afterUpdateTranslation downloadTranslationUrl`,this.downloadTranslationUrl),this.data.sendNotifyOnComplete&&this.longWaitingResCount&&t&&GM_notification({text:m.j.get(`VOTTranslationCompletedNotify`).replace(`{0}`,window.location.hostname),title:GM_info.script.name,timeout:5e3,silent:!0,tag:`VOTTranslationCompleted`,onclick:()=>{window.focus()}})}async validateAudioUrl(e){try{let t=this.isMultiMethodS3(e)?{method:`HEAD`}:{headers:{range:`bytes=0-0`}},n=await(0,y.G3)(e,t);if(v.A.log(`Test audio response`,n),n.ok)return v.A.log(`Valid audioUrl`,e),e;v.A.log(`Yandex returned not valid audio, trying to fix...`),this.videoData.detectedLanguage=`auto`;let r=await this.translationHandler.translateVideoImpl(this.videoData,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp,!this.data.useAudioDownload,this.actionsAbortController.signal);this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage),e=r.url,v.A.log(`Fixed audio audioUrl`,e)}catch(e){v.A.log(`Test audio error:`,e)}return e}proxifyAudio(e){return this.data.translateProxyEnabled===2&&e.startsWith(`https://vtrans.s3-private.mds.yandex.net/tts/prod/`)&&(e=e.replace(`https://vtrans.s3-private.mds.yandex.net/tts/prod/`,`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/`),console.log(`[VOT] Audio proxied via ${e}`)),e}isMultiMethodS3(e){return e.startsWith(`https://vtrans.s3-private.mds.yandex.net/tts/prod/`)||e.startsWith(`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/`)}async updateTranslation(e){e!==this.audioPlayer.player.currentSrc&&(e=await this.validateAudioUrl(this.proxifyAudio(e))),this.audioPlayer.player.src!==e&&(this.audioPlayer.player.src=e);try{this.audioPlayer.init()}catch(e){v.A.log(`this.audioPlayer.init() error`,e),this.transformBtn(`error`,e.message)}this.setupAudioSettings(),this.site.host===`twitter`&&document.querySelector(`button[data-testid="app-bar-back"][role="button"]`).addEventListener(`click`,this.stopTranslation),this.transformBtn(`success`,m.j.get(`disableTranslate`)),this.afterUpdateTranslation(e)}async translateFunc(e,t,n,r,i){console.log(`[VOT] Video Data: `,this.videoData),v.A.log(`Run videoValidator`),this.videoValidator(),this.uiManager.votOverlayView.votButton.loading=!0,this.volumeOnStart=this.getVideoVolume();let o=`${e}_${n}_${r}_${this.data.useLivelyVoice}`,s=this.cacheManager.getTranslation(o);if(s?.url){await this.updateTranslation(s.url),v.A.log(`[translateFunc] Cached translation was received`);return}if(s?.error){v.A.log(`Skip translation - previous attempt failed`),await this.updateTranslationErrorMsg(s.error.data?.message);return}if(t){let e=await this.translationHandler.translateStreamImpl(this.videoData,n,r,this.actionsAbortController.signal);if(!e){v.A.log(`Skip translation`);return}this.transformBtn(`success`,m.j.get(`disableTranslate`));try{this.hls=(0,C.CK)(),this.audioPlayer.init()}catch(e){v.A.log(`this.audioPlayer.init() error`,e),this.transformBtn(`error`,e.message)}let t=this.setHLSSource(e.result.url);return this.site.host===`youtube`&&a.A.videoSeek(this.video,10),this.setupAudioSettings(),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject?this.stopTranslation():this.afterUpdateTranslation(t)}let c=await this.translationHandler.translateVideoImpl(this.videoData,n,r,i,!this.data.useAudioDownload,this.actionsAbortController.signal);if(v.A.log(`[translateRes]`,c),!c){v.A.log(`Skip translation`);return}await this.updateTranslation(c.url);let l=this.cacheManager.getSubtitles(o);l?.some(e=>e.source===`yandex`&&e.translatedFromLanguage===this.videoData.detectedLanguage&&e.language===this.videoData.responseLanguage)||(this.cacheManager.deleteSubtitles(o),this.subtitles=[]),this.cacheManager.setTranslation(o,{videoId:e,from:n,to:r,url:this.downloadTranslationUrl,useLivelyVoice:this.data?.useLivelyVoice})}isYouTubeHosts(){return[`youtube`,`invidious`,`piped`,`poketube`,`ricktube`].includes(this.site.host)}setupHLS(e){this.hls.on(Hls.Events.MEDIA_ATTACHED,function(){v.A.log(`audio and hls.js are now bound together !`)}),this.hls.on(Hls.Events.MANIFEST_PARSED,function(e){v.A.log(`manifest loaded, found ${e?.levels?.length} quality level`)}),this.hls.loadSource(e),this.hls.attachMedia(this.audioPlayer.player.audio),this.hls.on(Hls.Events.ERROR,function(e){if(e.fatal)switch(e.type){case Hls.ErrorTypes.MEDIA_ERROR:console.log(`fatal media error encountered, try to recover`),this.hls.recoverMediaError();break;case Hls.ErrorTypes.NETWORK_ERROR:console.error(`fatal network error encountered`,e);break;default:this.hls.destroy();break}}),v.A.log(this.hls)}setHLSSource(e){let t=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent(`https://strm.yandex.ru`)}&referer=${encodeURIComponent(`https://strm.yandex.ru`)}&url=${encodeURIComponent(e)}`;if(this.hls)this.setupHLS(t);else if(this.audioPlayer.player.audio.canPlayType(`application/vnd.apple.mpegurl`))this.audioPlayer.player.src=t;else throw new T.n(`audioFormatNotSupported`);return t}setupAudioSettings(){typeof this.data.defaultVolume==`number`&&(this.audioPlayer.player.volume=this.data.defaultVolume/100),this.data.enabledAutoVolume&&this.setVideoVolume((this.data.autoVolume/100).toFixed(2))}stopTranslation=()=>{this.stopTranslate(),this.syncVideoVolumeSlider()};async handleSrcChanged(){v.A.log(`[VideoHandler] src changed`,this),this.firstPlay=!0,this.stopTranslation();let e=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.uiManager.votOverlayView.votButton.container.hidden=e,e&&(this.uiManager.votOverlayView.votMenu.hidden=e),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.uiManager.votOverlayView.votButton.container)||this.container.append(this.uiManager.votOverlayView.votButton.container,this.uiManager.votOverlayView.votMenu.container),this.videoData=await this.getVideoData();let t=`${this.videoData.videoId}_${this.videoData.detectedLanguage}_${this.videoData.responseLanguage}_${this.data.useLivelyVoice}`;this.subtitles=this.cacheManager.getSubtitles(t),await this.updateSubtitlesLangSelect(),this.translateToLang=this.data.responseLanguage??`ru`,this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage),this.actionsAbortController=new AbortController}async release(){v.A.log(`[VideoHandler] release`),this.initialized=!1,this.releaseExtraEvents(),this.subtitlesWidget.release(),this.uiManager.release()}collectReportInfo(){let e=`${C.R5.os.name} ${C.R5.os.version}`,t=`
Autogenerated by VOT:
  • OS: ${e}
  • Browser: ${C.R5.browser.name} ${C.R5.browser.version}
  • Loader: ${GM_info.scriptHandler} v${GM_info.version}
  • Script version: ${GM_info.script.version}
  • URL: ${window.location.href}
  • Lang: ${this.videoData.detectedLanguage} -> ${this.videoData.responseLanguage} (Lively voice: ${this.data.useLivelyVoice} | Audio download: ${this.data.useAudioDownload})
  • Player: ${this.data.newAudioPlayer?`New`:`Old`} (CSP only: ${this.data.onlyBypassMediaCSP})
  • Proxying mode: ${this.data.translateProxyEnabled}
`,n=`1-bug-report-${m.j.lang===`ru`?`ru`:`en`}.yml`;return{assignees:`ilyhalight`,template:n,os:e,"script-version":GM_info.script.version,"additional-info":t}}releaseExtraEvents(){this.abortController.abort(),this.resizeObserver?.disconnect(),[`youtube`,`googledrive`].includes(this.site.host)&&this.site.additionalData!==`mobile`&&this.syncVolumeObserver?.disconnect()}}let A=new w.c,j=new WeakMap;function M(e,t){if(!e||!t)return null;if(e instanceof Document)return e.querySelector(t);let n=e.closest(t);if(n)return n;let r=e.getRootNode();return M(r instanceof ShadowRoot?r.host:r,t)}function N(e,t){if(v.A.log(`findContainer`,e,t),e.shadowRoot){let n=M(t,e.selector);return v.A.log(`findContainer with site.shadowRoot`,n),n??t.parentElement}if(v.A.log(`findContainer without shadowRoot`),!e.selector)return t.parentElement;let n=document.querySelectorAll(e.selector);return Array.from(n).find(e=>e.contains(t))??t.parentElement}function P(){let e={"https://dev.epicgames.com":{targetOrigin:`https://dev.epicgames.com`,dataFilter:e=>typeof e==`string`&&e.startsWith(`getVideoId:`),extractVideoId:e=>e.pathname.split(`/`).slice(-2,-1)[0],iframeSelector:e=>`electra-player > iframe[src="${e}"]`,responseFormatter:(e,t)=>`${t}:${e}`,processRequest:e=>{let t=e.replace(`getVideoId:`,``);return atob(t)}}},t=Object.entries(e).find(([e])=>window.location.origin===e&&(e!==`https://dev.epicgames.com`||window.location.pathname.includes(`/community/learning/`)))?.[1];t&&window.addEventListener(`message`,e=>{try{if(e.origin!==t.targetOrigin||!t.dataFilter(e.data))return;let n=new URL(window.location.href),r=t.extractVideoId(n);if(!r)return;let i=t.processRequest?.(e.data)||n.href,a=typeof t.iframeSelector==`function`?t.iframeSelector(i):t.iframeSelector,o=document.querySelector(a);if(!o?.contentWindow)return;let s=t.responseFormatter(r,e.data);o.contentWindow.postMessage(s,t.targetOrigin)}catch(e){console.error(`Iframe communication error:`,e)}})}async function F(){if(console.log(`[VOT] Loading extension...`),(0,b.d4)()&&window.location.hash.includes(b.WF))return(0,c.q)();if(window.location.origin===l.xW)return await(0,u.L)();await m.j.update(),v.A.log(`Selected menu language: ${m.j.lang}`),P(),A.onVideoAdded.addListener(async e=>{if(j.has(e))return;let t,n=(0,o.cQ)().find(n=>(t=N(n,e),!!t));if(n){[`peertube`,`directlink`].includes(n.host)&&(n.url=window.location.origin);try{let r=new k(e,t,n);r.videoData=await r.getVideoData(),await r.init(),j.set(e,r)}catch(e){console.error(`[VOT] Failed to initialize videoHandler`,e)}}}),A.onVideoRemoved.addListener(async e=>{j.has(e)&&(await j.get(e).release(),j.delete(e))}),A.enable()}F().catch(e=>{console.error(`[VOT]`,e)}),r()}catch(e){r(e)}})},"./src/localization/locales/en.json":e=>{"use strict";e.exports=JSON.parse(`{"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","resetSettings":"Reset settings","videoBeingTranslated":"The video is being translated","videoLanguage":"Video language","translationLanguage":"Translation language","translationTake":"The translation will take","translationTakeMoreThanHour":"The translation will take more than an hour","translationTakeAboutMinute":"The translation will take about a minute","translationTakeFewMinutes":"The translation will take a few minutes","translationTakeApproximatelyMinutes":"The translation will take approximately {0} minutes","translationTakeApproximatelyMinute":"The translation will take approximately {0} minutes","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Don't translate from my language","VOTVolume":"Video volume:","VOTVolumeTranslation":"Translation volume:","VOTAutoSetVolume":"Reduce video volume to","VOTShowVideoSlider":"Video volume slider","VOTSyncVolume":"Link translation and video volume","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTSubtitles":"Subtitles","VOTSubtitlesDisabled":"Disabled","VOTSubtitlesMaxLength":"Subtitles max length","VOTHighlightWords":"Highlight words","VOTTranslatedFrom":"translated from","VOTAutogenerated":"autogenerated","VOTSettings":"VOT Settings","VOTMenuLanguage":"Menu language","VOTAuthors":"Authors","VOTVersion":"Version","VOTLoader":"Loader","VOTBrowser":"Browser","VOTShowPiPButton":"Show PiP button","langs":{"auto":"Auto","af":"Afrikaans","ak":"Akan","sq":"Albanian","am":"Amharic","ar":"Arabic","hy":"Armenian","as":"Assamese","ay":"Aymara","az":"Azerbaijani","bn":"Bangla","eu":"Basque","be":"Belarusian","bho":"Bhojpuri","bs":"Bosnian","bg":"Bulgarian","my":"Burmese","ca":"Catalan","ceb":"Cebuano","zh":"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)","co":"Corsican","hr":"Croatian","cs":"Czech","da":"Danish","dv":"Divehi","nl":"Dutch","en":"English","eo":"Esperanto","et":"Estonian","ee":"Ewe","fil":"Filipino","fi":"Finnish","fr":"French","gl":"Galician","lg":"Ganda","ka":"Georgian","de":"German","el":"Greek","gn":"Guarani","gu":"Gujarati","ht":"Haitian Creole","ha":"Hausa","haw":"Hawaiian","iw":"Hebrew","hi":"Hindi","hmn":"Hmong","hu":"Hungarian","is":"Icelandic","ig":"Igbo","id":"Indonesian","ga":"Irish","it":"Italian","ja":"Japanese","jv":"Javanese","kn":"Kannada","kk":"Kazakh","km":"Khmer","rw":"Kinyarwanda","ko":"Korean","kri":"Krio","ku":"Kurdish","ky":"Kyrgyz","lo":"Lao","la":"Latin","lv":"Latvian","ln":"Lingala","lt":"Lithuanian","lb":"Luxembourgish","mk":"Macedonian","mg":"Malagasy","ms":"Malay","ml":"Malayalam","mt":"Maltese","mi":"Māori","mr":"Marathi","mn":"Mongolian","ne":"Nepali","nso":"Northern Sotho","no":"Norwegian","ny":"Nyanja","or":"Odia","om":"Oromo","ps":"Pashto","fa":"Persian","pl":"Polish","pt":"Portuguese","pa":"Punjabi","qu":"Quechua","ro":"Romanian","ru":"Russian","sm":"Samoan","sa":"Sanskrit","gd":"Scottish Gaelic","sr":"Serbian","sn":"Shona","sd":"Sindhi","si":"Sinhala","sk":"Slovak","sl":"Slovenian","so":"Somali","st":"Southern Sotho","es":"Spanish","su":"Sundanese","sw":"Swahili","sv":"Swedish","tg":"Tajik","ta":"Tamil","tt":"Tatar","te":"Telugu","th":"Thai","ti":"Tigrinya","ts":"Tsonga","tr":"Turkish","tk":"Turkmen","uk":"Ukrainian","ur":"Urdu","ug":"Uyghur","uz":"Uzbek","vi":"Vietnamese","cy":"Welsh","fy":"Western Frisian","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","zu":"Zulu"},"streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTDetectService":"Language detection service","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings","translationTakeApproximatelyMinute2":"The translation will take approximately {0} minutes","VOTAudioBooster":"Extended translation volume increase","VOTSubtitlesDesign":"Subtitles design","VOTSubtitlesFontSize":"Font size of subtitles","VOTSubtitlesOpacity":"Transparency of the subtitle background","VOTSubtitlesDownloadFormat":"The format for downloading subtitles","VOTDownloadWithName":"Download files with the video name","VOTUpdateLocaleFiles":"Update localization files","VOTLocaleHash":"Locale hash","VOTUpdatedAt":"Updated at","VOTNeedWebAudioAPI":"To enable this, you must have a Web Audio API","VOTMediaCSPEnabledOnSite":"Media CSP is enabled on this site","VOTOnlyBypassMediaCSP":"Use it only for bypassing Media CSP","VOTNewAudioPlayer":"Use the new audio player","VOTUseNewModel":"Use an experimental variation of Yandex voices for some videos","TranslationDelayed":"The translation is slightly delayed","VOTTranslationCompletedNotify":"The translation on the {0} has been completed!","VOTSendNotifyOnComplete":"Send a notification that the video has been translated","VOTBugReport":"Report a bug","VOTTranslateProxyDisabled":"Disabled","VOTTranslateProxyEnabled":"Enabled","VOTTranslateProxyEverything":"Proxy everything","VOTTranslateProxyStatus":"Proxying mode","VOTTranslatedBy":"Translated by {0}","VOTStreamNotAvailable":"Translate stream isn't available","VOTTranslationTextService":"Text translation service","VOTNotAffectToVoice":"Doesn't affect the translation of text in voice over","DontTranslateSelectedLanguages":"Don't translate from selected languages","showVideoVolumeSlider":"Display the video volume slider","hotkeysSettings":"Hotkeys settings","None":"None","VOTUseLivelyVoice":"Use lively voices. Speakers sound like native Russians.","miscSettings":"Misc settings","services":{"yandexbrowser":"Yandex Browser","msedge":"Microsoft Edge","rust-server":"Rust Server"},"aboutExtension":"About extension","appearance":"Appearance","buttonPositionInWidePlayer":"Button position in wide player","position":{"left":"Left","right":"Right","top":"Top","default":"Default"},"secs":"secs","autoHideButtonDelay":"Delay before hiding the translate button","notFound":"not found","minButtonPositionContainer":"The button position only changes in players larger than 600 pixels.","VOTTranslateProxyStatusDefault":"Completely disabling proxying in your country may break the extension","PressTheKeyCombination":"Press the key combination...","VOTUseAudioDownload":"Use audio download","VOTUseAudioDownloadWarning":"Disabling audio downloads may affect the functionality of the extension","VOTAccountRequired":"You need to log in to use this feature","VOTMyAccount":"My account","VOTLogin":"Login","VOTLogout":"Logout","VOTRefresh":"Refresh","VOTYandexToken":"Enter the Yandex OAuth Token","VOTYandexTokenInfo":"You can manually set the account token in this field. Please note that we don't check its validity before sending a translate request","VOTLoginViaToken":"Login via token"}`)},"./src/localization/localizationProvider.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{j:()=>p});var i=n(`./src/localization/locales/en.json`),a=n(`./src/config/config.js`),o=n(`./src/utils/debug.ts`),s=n(`./src/utils/gm.ts`),c=n(`./src/utils/localization.ts`),l=n(`./src/utils/storage.ts`),u=n(`./src/utils/utils.ts`),d=e([s,c,l,u]);[s,c,l,u]=d.then?(await d)():d;class f{storageKeys=[`localePhrases`,`localeLang`,`localeHash`,`localeUpdatedAt`,`localeLangOverride`];lang;locale;defaultLocale=(0,u.GW)(i);cacheTTL=7200;localizationUrl=`${a.hx}/master/src/localization`;_langOverride=`auto`;constructor(){this.lang=this.getLang(),this.locale={}}async init(){this._langOverride=await l.d.get(`localeLangOverride`,`auto`),this.lang=this.getLang();let e=await l.d.get(`localePhrases`,``);return this.setLocaleFromJsonString(e),this}get langOverride(){return this._langOverride}getLang(){return this.langOverride===`auto`?c.v:this.langOverride}getAvailableLangs(){return`auto.en.ru.af.am.ar.az.bg.bn.bs.ca.cs.cy.da.de.el.es.et.eu.fa.fi.fr.gl.hi.hr.hu.hy.id.it.ja.jv.kk.km.kn.ko.lo.mk.ml.mn.ms.mt.my.ne.nl.pa.pl.pt.ro.si.sk.sl.sq.sr.su.sv.sw.tr.uk.ur.uz.vi.zh.zu`.split(`.`)}async reset(){for(let e of this.storageKeys)await l.d.delete(e);return this}buildUrl(e,t=!1){let n=t?`?timestamp=${(0,u.lg)()}`:``;return`${this.localizationUrl}${e}${n}`}async changeLang(e){let t=this.langOverride;return t===e?!1:(await l.d.set(`localeLangOverride`,e),this._langOverride=e,this.lang=this.getLang(),await this.update(!0),!0)}async checkUpdates(e=!1){o.A.log(`Check locale updates...`);try{let t=await(0,s.G3)(this.buildUrl(`/hashes.json`,e));if(!t.ok)throw t.status;let n=await t.json();return await l.d.get(`localeHash`)===n[this.lang]?!1:n[this.lang]}catch(e){return console.error(`[VOT] [localizationProvider] Failed to get locales hash:`,e),!1}}async update(e=!1){let t=await l.d.get(`localeUpdatedAt`,0);if(!e&&t+this.cacheTTL>(0,u.lg)()&&await l.d.get(`localeLang`)===this.lang)return this;let n=await this.checkUpdates(e);if(await l.d.set(`localeUpdatedAt`,(0,u.lg)()),!n)return this;o.A.log(`Updating locale...`);try{let t=await(0,s.G3)(this.buildUrl(`/locales/${this.lang}.json`,e));if(!t.ok)throw t.status;let r=await t.text();await l.d.set(`localePhrases`,r),await l.d.set(`localeHash`,n),await l.d.set(`localeLang`,this.lang),this.setLocaleFromJsonString(r)}catch(e){console.error(`[VOT] [localizationProvider] Failed to get locale:`,e),this.setLocaleFromJsonString(await l.d.get(`localePhrases`,``))}return this}setLocaleFromJsonString(e){try{let t=JSON.parse(e)||{};this.locale=(0,u.GW)(t)}catch(e){console.error(`[VOT] [localizationProvider]`,e),this.locale={}}return this}getFromLocale(e,t){return e?.[t]??this.warnMissingKey(e,t)}warnMissingKey(e,t){console.warn(`[VOT] [localizationProvider] locale`,e,`doesn't contain key`,t)}getDefault(e){return this.getFromLocale(this.defaultLocale,e)??e}get(e){return this.getFromLocale(this.locale,e)??this.getDefault(e)}}let p=new f;await p.init(),r()}catch(e){r(e)}},1)},"./src/styles/main.scss":()=>{GM_addStyle(`.vot-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;min-width:64px;height:36px;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:pointer;outline:none;font-size:14px;font-weight:500;line-height:36px;transition:box-shadow .2s;display:inline-block;position:relative;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;border:none!important;border-radius:4px!important;padding:0 16px!important}.vot-button[hidden]{display:none!important}.vot-button::-moz-focus-inner{border:none!important}.vot-button:before,.vot-button:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit!important}.vot-button:before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.vot-button:hover:before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.vot-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size}.vot-button[disabled=true]{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.12);color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);box-shadow:none;cursor:initial}.vot-button[disabled=true]:before,.vot-button[disabled=true]:after{opacity:0}.vot-outlined-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;min-width:64px;height:36px;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:pointer;background-color:#0000;outline:none;font-size:14px;font-weight:500;line-height:34px;display:inline-block;position:relative;border:solid 1px rgba(var(--vot-onsurface-rgb,0,0,0),.24)!important;border-radius:4px!important;margin:0!important;padding:0 16px!important}.vot-outlined-button[hidden]{display:none!important}.vot-outlined-button::-moz-focus-inner{border:none!important}.vot-outlined-button:before,.vot-outlined-button:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:3px!important}.vot-outlined-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-outlined-button:hover:before{opacity:.04}.vot-outlined-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-outlined-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-outlined-button[disabled=true]:before,.vot-outlined-button[disabled=true]:after{opacity:0}.vot-text-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;min-width:64px;height:36px;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:pointer;background-color:#0000;outline:none;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative;border:none!important;border-radius:4px!important;margin:0!important;padding:0 8px!important}.vot-text-button[hidden]{display:none!important}.vot-text-button::-moz-focus-inner{border:none!important}.vot-text-button:before,.vot-text-button:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit!important}.vot-text-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-text-button:hover:before{opacity:.04}.vot-text-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-text-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-text-button[disabled=true]:before,.vot-text-button[disabled=true]:after{opacity:0}.vot-icon-button{--vot-helper-onsurface:rgba(var(--vot-onsurface-rgb,0,0,0),.87);box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;width:36px;height:36px;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:pointer;background-color:#0000;outline:none;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative;border:none!important;border-radius:50%!important;margin:0!important;padding:0!important}.vot-icon-button[hidden]{display:none!important}.vot-icon-button::-moz-focus-inner{border:none!important}.vot-icon-button:before,.vot-icon-button:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit!important}.vot-icon-button:before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity .3s,background-size .4s}.vot-icon-button:hover:before{opacity:.04}.vot-icon-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size,opacity}.vot-icon-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);fill:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-icon-button[disabled=true]:before,.vot-icon-button[disabled=true]:after{opacity:0}.vot-icon-button svg{fill:inherit;stroke:inherit;width:24px;height:36px}.vot-hotkey{justify-content:space-between;align-items:start;display:flex}.vot-hotkey-label{word-break:break-word;max-width:80%}.vot-hotkey-button{--vot-helper-surface:rgba(var(--vot-onsurface-rgb),.2);--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;vertical-align:middle;text-align:center;width:fit-content;min-width:32px;height:fit-content;font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:pointer;background-color:#0000;outline:none;font-size:15px;line-height:1.5;display:inline-block;position:relative;border:solid 1px rgba(var(--vot-onsurface-rgb,0,0,0),.24)!important;border-radius:4px!important;margin:0!important;padding:0 8px!important}.vot-hotkey-button[hidden]{display:none!important}.vot-hotkey-button::-moz-focus-inner{border:none!important}.vot-hotkey-button:before,.vot-hotkey-button:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:3px!important}.vot-hotkey-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-hotkey-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-hotkey-button:hover:before{opacity:.04}.vot-hotkey-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-hotkey-button[data-status=active]{color:rgb(var(--vot-helper-theme))}.vot-hotkey-button[data-status=active]:before{opacity:.04}.vot-hotkey-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-hotkey-button[disabled=true]:before,.vot-hotkey-button[disabled=true]:after{opacity:0}.vot-textfield{display:inline-block;--vot-helper-theme:rgb(var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243)))!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari3:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif)!important;text-align:start!important;padding-top:6px!important;font-size:16px!important;line-height:1.5!important;position:relative!important}.vot-textfield[hidden]{display:none!important}.vot-textfield>input,.vot-textfield>textarea{box-sizing:border-box!important;border-style:solid!important;border-width:1px!important;border-color:transparent var(--vot-helper-safari2)var(--vot-helper-safari2)!important;width:100%!important;height:inherit!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;-webkit-text-fill-color:currentColor!important;font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;caret-color:var(--vot-helper-theme)!important;background-color:#0000!important;border-radius:4px!important;margin:0!important;padding:15px 13px!important;transition:border .2s,box-shadow .2s!important;box-shadow:inset 1px 0 #0000,inset -1px 0 #0000,inset 0 -1px #0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):placeholder-shown,.vot-textfield>textarea:not(:focus):placeholder-shown{border-top-color:var(--vot-helper-safari2)!important}.vot-textfield>input+span,.vot-textfield>textarea+span{font-family:inherit;width:100%!important;max-height:100%!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;cursor:text!important;pointer-events:none!important;font-size:75%!important;line-height:15px!important;transition:color .2s,font-size .2s,line-height .2s!important;display:flex!important;position:absolute!important;top:0!important;left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span,.vot-textfield>textarea:not(:focus):placeholder-shown+span{font-size:inherit!important;line-height:68px!important}.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{content:""!important;box-sizing:border-box!important;border-top:solid 1px var(--vot-helper-safari2)!important;pointer-events:none!important;min-width:10px!important;height:8px!important;margin-top:6px!important;transition:border .2s,box-shadow .2s!important;display:block!important;box-shadow:inset 0 1px #0000!important}.vot-textfield>input+span:before,.vot-textfield>textarea+span:before{border-left:1px solid #0000!important;border-radius:4px 0!important;margin-right:4px!important}.vot-textfield>input+span:after,.vot-textfield>textarea+span:after{border-right:1px solid #0000!important;border-radius:0 4px!important;flex-grow:1!important;margin-left:4px!important}.vot-textfield>input.vot-show-placeholer+span:before,.vot-textfield>textarea.vot-show-placeholer+span:before{margin-right:0!important}.vot-textfield>input.vot-show-placeholer+span:after,.vot-textfield>textarea.vot-show-placeholer+span:after{margin-left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span:before,.vot-textfield>input:not(:focus):placeholder-shown+span:after,.vot-textfield>textarea:not(:focus):placeholder-shown+span:before,.vot-textfield>textarea:not(:focus):placeholder-shown+span:after{border-top-color:#0000!important}.vot-textfield:hover>input:not(:disabled),.vot-textfield:hover>textarea:not(:disabled){border-color:transparent var(--vot-helper-safari3)var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled)+span:before,.vot-textfield:hover>input:not(:disabled)+span:after,.vot-textfield:hover>textarea:not(:disabled)+span:before,.vot-textfield:hover>textarea:not(:disabled)+span:after{border-top-color:var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled):not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:disabled):not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3)!important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:transparent var(--vot-helper-theme)var(--vot-helper-theme)!important;box-shadow:inset 1px 0 var(--vot-helper-theme),inset -1px 0 var(--vot-helper-theme),inset 0 -1px var(--vot-helper-theme)!important;outline:none!important}.vot-textfield>input:focus+span,.vot-textfield>textarea:focus+span{color:var(--vot-helper-theme)!important}.vot-textfield>input:focus+span:before,.vot-textfield>input:focus+span:after,.vot-textfield>textarea:focus+span:before,.vot-textfield>textarea:focus+span:after{border-top-color:var(--vot-helper-theme)!important;box-shadow:inset 0 1px var(--vot-helper-theme)!important}.vot-textfield>input:disabled,.vot-textfield>input:disabled+span,.vot-textfield>textarea:disabled,.vot-textfield>textarea:disabled+span{border-color:transparent var(--vot-helper-safari1)var(--vot-helper-safari1)!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;pointer-events:none!important}.vot-textfield>input:disabled+span:before,.vot-textfield>input:disabled+span:after,.vot-textfield>textarea:disabled+span:before,.vot-textfield>textarea:disabled+span:after,.vot-textfield>input:disabled:placeholder-shown,.vot-textfield>input:disabled:placeholder-shown+span,.vot-textfield>textarea:disabled:placeholder-shown,.vot-textfield>textarea:disabled:placeholder-shown+span{border-top-color:var(--vot-helper-safari1)!important}.vot-textfield>input:disabled:placeholder-shown+span:before,.vot-textfield>input:disabled:placeholder-shown+span:after,.vot-textfield>textarea:disabled:placeholder-shown+span:before,.vot-textfield>textarea:disabled:placeholder-shown+span:after{border-top-color:#0000!important}@media not all and (-webkit-min-device-pixel-ratio:.0000264583),not all and (min-resolution:.001dpcm){@supports ((-webkit-appearance:none)){.vot-textfield>input,.vot-textfield>input+span,.vot-textfield>textarea,.vot-textfield>textarea+span,.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{transition-duration:.1s!important}}}.vot-checkbox{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));z-index:0;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);text-align:start;font-size:16px;line-height:1.5;display:inline-block;position:relative}.vot-checkbox-sub{padding-left:28px!important}.vot-checkbox[hidden]{display:none!important}.vot-checkbox>input{-webkit-appearance:none;appearance:none;z-index:10000;box-sizing:border-box;opacity:1;cursor:pointer;background:0 0;outline:none;width:18px;height:18px;transition:border-color .2s,background-color .2s;display:block;position:absolute;border:2px solid!important;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;border-radius:2px!important;margin:3px 1px!important;padding:0!important}.vot-checkbox>input+span{box-sizing:border-box;width:inherit;cursor:pointer;font-family:inherit;font-weight:400;display:inline-block;position:relative;padding-left:30px!important}.vot-checkbox>input+span:before{content:"";background-color:rgb(var(--vot-onsurface-rgb,0,0,0));opacity:0;pointer-events:none;width:40px;height:40px;transition:opacity .3s,transform .2s;display:block;position:absolute;top:-8px;left:-10px;transform:scale(1);border-radius:50%!important}.vot-checkbox>input+span:after{content:"";z-index:10000;pointer-events:none;width:10px;height:5px;transition:border-color .2s;display:block;position:absolute;top:3px;left:1px;transform:translate(3px,4px)rotate(-45deg);box-sizing:content-box!important;border:0 solid #0000!important;border-width:0 0 2px 2px!important}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{background-color:rgb(var(--vot-helper-theme));border-color:rgb(var(--vot-helper-theme))!important}.vot-checkbox>input:checked+span:before,.vot-checkbox>input:indeterminate+span:before{background-color:rgb(var(--vot-helper-theme))}.vot-checkbox>input:checked+span:after,.vot-checkbox>input:indeterminate+span:after{border-color:rgb(var(--vot-helper-ontheme,255,255,255))!important}.vot-checkbox>input:hover{box-shadow:none!important}.vot-checkbox>input:indeterminate+span:after{transform:translate(4px,3px);border-left-width:0!important}.vot-checkbox:hover>input+span:before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input:not(:disabled){border-color:rgb(var(--vot-helper-theme))!important}.vot-checkbox:active>input:checked{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6);border-color:#0000!important}.vot-checkbox:active>input+span:before{opacity:1;transition:transform,opacity;transform:scale(0)}.vot-checkbox>input:disabled{cursor:initial;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);border-color:#0000!important}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial}.vot-checkbox>input:disabled+span:before{opacity:0;transform:scale(0)}.vot-slider{display:inline-block;--vot-safari-helper1:rgba(var(--vot-primary-rgb,33,150,243),.04)!important;--vot-safari-helper2:rgba(var(--vot-primary-rgb,33,150,243),.12)!important;--vot-safari-helper3:rgba(var(--vot-primary-rgb,33,150,243),.16)!important;--vot-safari-helper4:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;width:100%!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system)!important;text-align:start!important;font-size:16px!important;line-height:1.5!important}.vot-slider[hidden]{display:none!important}.vot-slider>input{-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important;background-color:#0000!important;border:none!important;width:100%!important;height:36px!important;margin:0 0 -36px!important;padding:0!important;display:block!important;position:relative!important;top:24px!important}.vot-slider>input:hover{box-shadow:none!important}.vot-slider>input:last-child{margin:0!important;position:static!important}.vot-slider>input:before{content:""!important;width:calc(100%*var(--vot-progress,0))!important;background:rgb(var(--vot-primary-rgb,33,150,243))!important;height:2px!important;display:block!important;position:absolute!important;top:calc(50% - 1px)!important}.vot-slider>input:disabled{cursor:default!important;opacity:.38!important}.vot-slider>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-moz-range-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input:disabled::-ms-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input:disabled::-ms-fill-upper{opacity:.38!important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-slider>input:disabled:-webkit-slider-thumb{color:rgb(var(--vot-surface-rgb,255,255,255))!important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4)!important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:focus{outline:none!important}.vot-slider>input::-webkit-slider-runnable-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-moz-range-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-ms-track{box-sizing:border-box!important;background-color:#0000!important;border:none!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important;padding:0 17px!important}.vot-slider>input::-webkit-slider-thumb{-webkit-appearance:none!important;appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider>input::-moz-range-thumb{-webkit-appearance:none!important;appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider>input::-ms-thumb{-webkit-appearance:none!important;appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider>input::-webkit-slider-thumb{-webkit-appearance:none!important;margin:0!important}.vot-slider>input::-moz-range-thumb{-moz-appearance:none!important}.vot-slider>input::-ms-thumb{margin:0 17px!important}.vot-slider>input::-moz-range-progress{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-fill-lower{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-fill-upper{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-moz-focus-outer{border:none!important}.vot-slider>span{margin-bottom:36px!important;display:inline-block!important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1)!important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider-label-value{margin-left:4px!important}.vot-select{font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;font-size:14px;font-weight:400;line-height:1.5;display:flex;--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0)!important;--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87)!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-select[hidden]{display:none!important}.vot-select-outer{cursor:pointer;justify-content:space-between;align-items:center;width:120px;max-width:120px;display:flex;border:1px solid var(--vot-helper-safari1)!important;border-radius:4px!important;padding:0 5px!important;transition:border .2s!important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2)!important}.vot-select-title{text-overflow:ellipsis;white-space:nowrap;font-family:inherit;overflow:hidden}.vot-select-arrow-icon{justify-content:center;align-items:center;width:20px;height:32px;display:flex}.vot-select-arrow-icon svg{fill:inherit;stroke:inherit}.vot-select-content-list{flex-direction:column;display:flex}.vot-select-content-list .vot-select-content-item{cursor:pointer;border-radius:8px!important;padding:5px 10px!important}.vot-select-content-list .vot-select-content-item:not([inert]):hover{background-color:#2a2c31}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]{color:rgb(var(--vot-primary-rgb,33,150,243));background-color:rgba(var(--vot-primary-rgb,33,150,243),.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb,33,150,243),.1)!important}.vot-select-content-list .vot-select-content-item[inert]{cursor:default;color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)}.vot-select-content-list .vot-select-content-item[hidden]{display:none!important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);text-align:start;font-weight:700;line-height:1.5}.vot-header[hidden]{display:none!important}.vot-header:not(:first-child){padding-top:8px}.vot-header-level-1{font-size:2em}.vot-header-level-2{font-size:1.5em}.vot-header-level-3{font-size:1.17em}.vot-header-level-4{font-size:1em}.vot-header-level-5{font-size:.83em}.vot-header-level-6{font-size:.67em}.vot-info{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);text-align:start;-webkit-user-select:text;user-select:text;font-size:16px;line-height:1.5;display:flex}.vot-info[hidden]{display:none!important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb),.5);flex:1;margin-left:8px!important}.vot-details{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);text-align:start;cursor:pointer;justify-content:space-between;align-items:center;font-size:16px;line-height:1.5;transition:background .5s;display:flex;border-radius:.5em!important;margin:-.5em!important;padding:.5em!important}.vot-details[hidden]{display:none!important}.vot-details-arrow-icon{width:20px;height:32px;fill:rgba(var(--vot-helper-onsurface-rgb),.87);justify-content:center;align-items:center;display:flex;transform:scale(1.25)rotate(-90deg)}.vot-details:hover{background:rgba(var(--vot-onsurface-rgb,0,0,0),.04)}.vot-lang-select{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;display:flex}.vot-lang-select[hidden]{display:none!important}.vot-lang-select-icon{justify-content:center;align-items:center;width:32px;height:32px;display:flex}.vot-lang-select-icon svg{fill:inherit;stroke:inherit}.vot-segmented-button{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);-webkit-user-select:none;user-select:none;background:rgb(var(--vot-surface-rgb,255,255,255));max-width:100vw;height:32px;color:var(--vot-helper-theme);fill:var(--vot-helper-theme);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:default;z-index:2147483647;align-items:center;font-size:16px;line-height:1.5;transition:opacity .5s;display:flex;position:absolute;top:5rem;left:50%;overflow:hidden;transform:translate(-50%);border-radius:4px!important}.vot-segmented-button[hidden]{display:none!important}.vot-segmented-button *{box-sizing:border-box!important}.vot-segmented-button .vot-separator{background:rgba(var(--vot-helper-theme-rgb),.1);width:1px;height:50%}.vot-segmented-button .vot-separator[hidden]{display:none!important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{height:100%;color:inherit;background-color:#0000;justify-content:center;align-items:center;transition:background-color .1s ease-in-out;display:flex;position:relative;overflow:hidden;border:none!important;padding:0 8px!important}.vot-segmented-button .vot-segment[hidden],.vot-segmented-button [hidden].vot-segment-only-icon{display:none!important}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before,.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{content:"";opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit!important}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before{background-color:rgb(var(--vot-helper-theme-rgb));transition:opacity .2s}.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-segmented-button .vot-segment:hover:before,.vot-segmented-button .vot-segment-only-icon:hover:before{opacity:.04}.vot-segmented-button .vot-segment:active:after,.vot-segmented-button .vot-segment-only-icon:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0!important}.vot-segmented-button .vot-segment-label{white-space:nowrap;color:inherit;font-weight:400;margin-left:8px!important}.vot-segmented-button[data-status=success] .vot-translate-button{color:rgb(var(--vot-primary-rgb,33,150,243));fill:rgb(var(--vot-primary-rgb,33,150,243))}.vot-segmented-button[data-status=error] .vot-translate-button{color:#f28b82;fill:#f28b82}.vot-segmented-button[data-loading=true] #vot-loading-icon{display:block!important}.vot-segmented-button[data-loading=true] #vot-translate-icon{display:none!important}.vot-segmented-button[data-direction=column]{flex-direction:column;height:fit-content}.vot-segmented-button[data-direction=column] .vot-segment-label{display:none}.vot-segmented-button[data-direction=column]>.vot-segment-only-icon,.vot-segmented-button[data-direction=column]>.vot-segment{padding:8px!important}.vot-segmented-button[data-direction=column] .vot-separator{width:50%;height:1px}.vot-segmented-button[data-position=left]{top:12.5vh;left:50px}.vot-segmented-button[data-position=right]{top:12.5vh;left:auto;right:0}.vot-segmented-button svg{width:24px;fill:inherit;stroke:inherit}.vot-tooltip{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);--vot-helper-ondialog:rgb(var(--vot-ondialog-rgb,37,38,40));--vot-helper-border:rgb(var(--vot-tooltip-border,69,69,69));-webkit-user-select:none;user-select:none;background:rgb(var(--vot-surface-rgb,255,255,255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:default;z-index:2147483647;opacity:0;align-items:center;width:max-content;max-width:calc(100vw - 10px);height:max-content;font-size:14px;line-height:1.5;transition:opacity .5s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;box-shadow:0 1px 3px #0000001f;border-radius:4px!important;padding:4px 8px!important}.vot-tooltip[hidden]{display:none!important}.vot-tooltip[data-trigger=click]{-webkit-user-select:text;user-select:text}.vot-tooltip.vot-tooltip-bordered{border:1px solid var(--vot-helper-border)}.vot-tooltip *{box-sizing:border-box!important}.vot-menu{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);-webkit-user-select:none;user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);cursor:default;z-index:2147483647;visibility:visible;opacity:1;transform-origin:top;min-width:300px;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;position:absolute;top:calc(5rem + 48px);left:50%;overflow:hidden;transform:translate(-50%)scale(1);border-radius:8px!important}.vot-menu *{box-sizing:border-box!important}.vot-menu[hidden]{pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%)scale(0);display:block!important}.vot-menu-content-wrapper{min-height:100px;max-height:calc(var(--vot-container-height,75vh) - (5rem + 32px + 16px)*2);flex-direction:column;display:flex;overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-menu-header-container:empty{padding:0 0 16px!important}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px!important;margin-top:4px!important}.vot-menu-title-container{font-size:inherit;font-weight:inherit;text-align:start;outline:0;flex:1;display:flex;margin:0!important}.vot-menu-title{flex:1;font-size:16px;font-weight:400;line-height:1;padding:16px!important}.vot-menu-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:8px;min-height:1.375rem;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important;padding:0 16px!important}.vot-menu-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-menu-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-menu-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-menu-footer-container{flex-shrink:0;justify-content:flex-end;display:flex;padding:16px!important}.vot-menu-footer-container:empty{padding:16px 0 0!important}.vot-menu[data-position=left]{transform-origin:0;top:12.5vh;left:240px}.vot-menu[data-position=right]{transform-origin:100%;top:12.5vh;left:auto;right:-80px}.vot-dialog{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);max-width:initial;max-height:initial;width:min(var(--vot-dialog-width,512px),100%);top:50%;bottom:50%;background-color:var(--vot-helper-surface);height:fit-content;color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);-webkit-user-select:none;user-select:none;visibility:visible;opacity:1;transform-origin:50%;border-radius:8px;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;display:block;position:fixed;top:0;bottom:0;left:0;right:0;overflow-x:auto;overflow-y:hidden;transform:scale(1);box-shadow:0 0 16px #0000001f,0 16px 16px #0000003d;margin:auto!important;padding:0!important}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transition:opacity .1s,transform .2s;transform:scale(.5)}.vot-dialog-container{visibility:visible;z-index:2147483647;position:absolute}.vot-dialog-container[hidden]{pointer-events:none;visibility:hidden;display:block!important}.vot-dialog-container *{box-sizing:border-box!important}.vot-dialog-backdrop{opacity:1;background-color:#0009;transition:opacity .3s;position:fixed;top:0;bottom:0;left:0;right:0}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.vot-dialog-content-wrapper{flex-direction:column;max-height:75vh;display:flex;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-dialog-header-container:empty{padding:0 0 20px}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px!important;margin-top:4px!important}.vot-dialog-title-container{font-size:inherit;font-weight:inherit;outline:0;flex:1;display:flex;margin:0!important}.vot-dialog-title{flex:1;font-size:115.385%;font-weight:700;line-height:1;padding:20px 20px 16px!important}.vot-dialog-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:16px;min-height:1.375rem;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important;padding:0 20px!important}.vot-dialog-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-dialog-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-dialog-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-dialog-footer-container{flex-shrink:0;justify-content:flex-end;display:flex;padding:16px!important}.vot-dialog-footer-container:empty{padding:20px 0 0!important}.vot-inline-loader{aspect-ratio:5;--vot-loader-bg:no-repeat radial-gradient(farthest-side,rgba(var(--vot-onsurface-rgb,0,0,0),.38)94%,transparent);background:var(--vot-loader-bg),var(--vot-loader-bg),var(--vot-loader-bg),var(--vot-loader-bg);background-size:20% 100%;height:8px;animation:.75s infinite alternate dotsSlide,1.5s infinite alternate dotsFlip}.vot-loader-text{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));fill:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);font-size:12px;font-weight:500}@keyframes dotsSlide{0%,10%{background-position:0 0,0 0,0 0,0 0}33%{background-position:0 0,33.3333% 0,33.3333% 0,33.3333% 0}66%{background-position:0 0,33.3333% 0,66.6667% 0,66.6667% 0}90%,to{background-position:0 0,33.3333% 0,66.6667% 0,100% 0}}@keyframes dotsFlip{0%,49.99%{transform:scale(1)}50%,to{transform:scale(-1)}}.vot-label{align-items:center;gap:4px;font-family:inherit;font-size:16px;display:flex}.vot-label-icon{width:20px;height:20px;margin-top:2px}.vot-label-icon>svg{width:20px;height:20px}.vot-account{justify-content:space-between;align-items:center;gap:1rem;display:flex}.vot-account-container,.vot-account-wrapper,.vot-account-buttons{align-items:center;gap:1rem;display:flex}.vot-account-avatar{min-width:36px;max-width:36px;min-height:36px;max-height:36px;overflow:hidden}.vot-account-avatar-img{object-fit:cover;border-radius:50%;width:36px;height:36px}.vot-account [hidden]{display:none!important}.vot-subtitles{--vot-subtitles-background:rgba(var(--vot-surface-rgb,46,47,52),var(--vot-subtitles-opacity,.8));background:var(--vot-subtitles-background,#2e2f34cc);width:max-content;max-width:100%;max-height:100%;color:var(--vot-subtitles-color,#e3e3e3);pointer-events:all;font-size:20px;font-family:var(--vot-font-family,"Roboto","Segoe UI",system-ui,sans-serif);box-sizing:border-box;-webkit-user-select:none;user-select:none;flex-wrap:wrap;gap:0 3px;line-height:normal;display:flex;position:relative;border-radius:.5em!important;padding:.5em!important}.vot-subtitles-widget{z-index:2147483647;pointer-events:none;justify-content:center;align-items:center;width:50%;min-height:20%;max-height:100%;display:flex;position:absolute;top:75%;left:25%}.vot-subtitles-info{flex-direction:column;gap:2px;display:flex;padding:6px!important}.vot-subtitles-info-service{color:var(--vot-subtitles-context-color,#86919b);margin-bottom:8px!important;font-size:10px!important;line-height:1!important}.vot-subtitles-info-header{color:var(--vot-subtitles-header-color,#fff);margin-bottom:6px!important;font-size:20px!important;font-weight:500!important;line-height:1!important}.vot-subtitles-info-context{color:var(--vot-subtitles-context-color,#86919b);font-size:12px!important;line-height:1.2!important}.vot-subtitles span{cursor:pointer;position:relative;font-size:inherit!important;font-family:inherit!important;line-height:normal!important}.vot-subtitles span.passed{color:var(--vot-subtitles-passed-color,#2196f3)}.vot-subtitles span:before{content:"";z-index:-1;width:100%;height:100%;position:absolute;top:2px;bottom:2px;left:-2px;right:-2px;border-radius:4px!important;padding:0 2px!important}.vot-subtitles span:hover:before{background:var(--vot-subtitles-hover-color,#ffffff8c)}.vot-subtitles span.selected:before{background:var(--vot-subtitles-passed-color,#2196f3)}#vot-subtitles-info.vot-subtitles-info *{-webkit-user-select:text!important;user-select:text!important}:root{--vot-font-family:"Roboto","Segoe UI",system-ui,sans-serif;--vot-primary-rgb:139,180,245;--vot-onprimary-rgb:32,33,36;--vot-surface-rgb:32,33,36;--vot-onsurface-rgb:227,227,227;--vot-subtitles-color:rgb(var(--vot-onsurface-rgb,227,227,227));--vot-subtitles-passed-color:rgb(var(--vot-primary-rgb,33,150,243))}vot-block{font-family:inherit;display:block;visibility:visible!important}.vot-portal{display:inline}.vot-portal-local{z-index:2147483647;position:fixed;top:0;left:0}`)},"./src/subtitles.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{I:()=>_,o:()=>v});var i=n(`./node_modules/@vot.js/ext/dist/helpers/youtube.js`),a=n(`./node_modules/@vot.js/shared/dist/utils/subs.js`),o=n(`./node_modules/lit-html/lit-html.js`),s=n(`./src/config/config.js`),c=n(`./src/localization/localizationProvider.ts`),l=n(`./src/ui.js`),u=n(`./src/ui/components/tooltip.ts`),d=n(`./src/utils/gm.ts`),f=n(`./src/utils/localization.ts`),p=n(`./src/utils/storage.ts`),m=n(`./src/utils/translateApis.ts`),h=n(`./src/utils/utils.ts`),g=e([c,l,u,d,f,p,m,h]);[c,l,u,d,f,p,m,h]=g.then?(await g)():g;class _{static formatYandexTokens(e){let t=e.startMs+e.durationMs;return e.tokens.reduce((n,r,i)=>{let a=e.tokens[i+1],o=n[n.length-1],s=o?.alignRange?.end??0,c=s+r.text.length;if(r.alignRange={start:s,end:c},n.push(r),a){let e=r.startMs+r.durationMs,i=a.startMs?a.startMs-e:t-e;n.push({text:` `,startMs:e,durationMs:i,alignRange:{start:c,end:c+1}})}return n},[])}static createTokens(e,t){let n=e.text.split(/([\n \t])/).reduce((e,n)=>{if(!n.length)return e;let r=e[e.length-1]??t,i=r?.alignRange?.end??0,a=i+n.length;return e.push({text:n,alignRange:{start:i,end:a}}),e},[]),r=Math.floor(e.durationMs/n.length),i=e.startMs+e.durationMs;return n.map((t,a)=>{let o=a===n.length-1,s=e.startMs+r*a,c=o?i-s:r;return{...t,startMs:s,durationMs:c}})}static processTokens(e,t){let n=[],r,{source:i,isAutoGenerated:a}=t;for(let t of e.subtitles){let e=t?.tokens?.length,o=e&&(i===`yandex`||i===`youtube`&&a)?_.formatYandexTokens(t):_.createTokens(t,r);r=o[o.length-1],n.push({...t,tokens:o})}return e.containsTokens=!0,n}static formatYoutubeSubtitles(e,t=!1){if(!e?.events?.length)return console.error(`[VOT] Invalid YouTube subtitles format:`,e),{containsTokens:t,subtitles:[]};let n={containsTokens:t,subtitles:[]};for(let r=0;re.events[r+1].tStartMs&&(a=e.events[r+1].tStartMs-i.tStartMs);let o=[],s=a;for(let e=0;ee.text).join(` `);c&&n.subtitles.push({text:c,startMs:i.tStartMs,durationMs:a,...t?{tokens:o}:{}})}return n}static cleanJsonSubtitles(e){let{containsTokens:t,subtitles:n}=e;return{containsTokens:t,subtitles:n.map(e=>({...e,text:e.text.replace(/(<([^>]+)>)/gi,``)}))}}static async fetchSubtitles(e){let{source:t,isAutoGenerated:n,format:r}=e,{url:o}=e;if(t===`youtube`){let e=i.A.getPoToken();if(e){let t=i.A.getDeviceParams();o+=`&potc=1&pot=${e}&${t}`}}try{let i=await(0,d.G3)(o,{timeout:7e3}),s;if([`vtt`,`srt`].includes(r)){let e=await i.text();s=(0,a.vk)(e,`json`)}else s=await i.json();return t===`youtube`?s=_.formatYoutubeSubtitles(s,n):t===`vk`&&(s=_.cleanJsonSubtitles(s)),s.subtitles=_.processTokens(s,e),console.log(`[VOT] Processed subtitles:`,s),s}catch(e){return console.error(`[VOT] Failed to process subtitles:`,e),{containsTokens:!1,subtitles:[]}}}static async getSubtitles(e,t){let{host:n,url:r,detectedLanguage:i,videoId:a,duration:o,subtitles:s=[]}=t;try{let t=await Promise.race([e.getSubtitles({videoData:{host:n,url:r,videoId:a,duration:o},requestLang:i}),(0,h.wR)(5e3,`Timeout`)]);console.log(`[VOT] Subtitles response:`,t),t.waiting&&console.error(`[VOT] Failed to get Yandex subtitles`);let c=(t.subtitles??[]).reduce((e,t)=>(t.language&&!e.find(e=>e.source===`yandex`&&e.language===t.language&&!e.translatedFromLanguage)&&e.push({source:`yandex`,format:`json`,language:t.language,url:t.url}),t.translatedLanguage&&e.push({source:`yandex`,format:`json`,language:t.translatedLanguage,translatedFromLanguage:t.language,url:t.translatedUrl}),e),[]);return[...c,...s].sort((e,t)=>{if(e.source!==t.source)return e.source===`yandex`?-1:1;if(e.language!==t.language&&(e.language===f.v||t.language===f.v))return e.language===f.v?-1:1;if(e.source===`yandex`){if(e.translatedFromLanguage!==t.translatedFromLanguage)return!e.translatedFromLanguage||!t.translatedFromLanguage?e.language===t.language?e.translatedFromLanguage?1:-1:e.translatedFromLanguage?-1:1:e.translatedFromLanguage===i?-1:1;if(!e.translatedFromLanguage)return e.language===i?-1:1}return e.source!==`yandex`&&e.isAutoGenerated!==t.isAutoGenerated?e.isAutoGenerated?1:-1:0})}catch(e){let t=e.message===`Timeout`?`Failed to get Yandex subtitles: timeout`:`Error in getSubtitles function`;throw console.error(`[VOT] ${t}`,e),e}}}class v{constructor(e,t,n,r,i=void 0){this.video=e,this.container=t,this.site=n,this.tooltipLayoutRoot=i,this.portal=r,this.subtitlesContainer=this.createSubtitlesContainer(),this.position={left:25,top:75},this.dragging={active:!1,offset:{x:0,y:0}},this.subtitles=null,this.subtitleLang=void 0,this.lastContent=null,this.highlightWords=!1,this.fontSize=20,this.opacity=.2,this.maxLength=300,this.abortController=new AbortController,this.bindEvents(),this.updateContainerRect()}createSubtitlesContainer(){return this.subtitlesContainer=document.createElement(`vot-block`),this.subtitlesContainer.classList.add(`vot-subtitles-widget`),this.container.appendChild(this.subtitlesContainer),this.subtitlesContainer}bindEvents(){let{signal:e}=this.abortController;this.onPointerDownBound=e=>this.onPointerDown(e),this.onPointerUpBound=()=>this.onPointerUp(),this.onPointerMoveBound=e=>this.onPointerMove(e),this.onTimeUpdateBound=()=>this.update(),document.addEventListener(`pointerdown`,this.onPointerDownBound,{signal:e}),document.addEventListener(`pointerup`,this.onPointerUpBound,{signal:e}),document.addEventListener(`pointermove`,this.onPointerMoveBound,{signal:e}),this.video?.addEventListener(`timeupdate`,this.onTimeUpdateBound,{signal:e}),this.resizeObserver=new ResizeObserver(()=>this.onResize()),this.resizeObserver.observe(this.container)}onPointerDown(e){if(!this.subtitlesContainer.contains(e.target))return;let t=this.subtitlesContainer.getBoundingClientRect(),n=this.container.getBoundingClientRect();this.dragging={active:!0,offset:{x:e.clientX-t.left,y:e.clientY-t.top},containerOffset:{x:n.left,y:n.top}}}onPointerUp(){this.dragging.active=!1}onPointerMove(e){if(!this.dragging.active)return;e.preventDefault();let{width:t,height:n}=this.container.getBoundingClientRect(),{containerOffset:r,offset:i}=this.dragging;this.position={left:(e.clientX-i.x-r.x)/t*100,top:(e.clientY-i.y-r.y)/n*100},this.applySubtitlePosition()}onResize(){this.updateContainerRect()}updateContainerRect(){this.containerRect=this.container.getBoundingClientRect(),this.applySubtitlePosition()}applySubtitlePosition(){let{width:e,height:t}=this.containerRect,{offsetWidth:n,offsetHeight:r}=this.subtitlesContainer,i=(e-n)/e*100,a=(t-r)/t*100;this.position.left=Math.max(0,Math.min(this.position.left,i)),this.position.top=Math.max(0,Math.min(this.position.top,a)),this.subtitlesContainer.style.left=`${this.position.left}%`,this.subtitlesContainer.style.top=`${this.position.top}%`,this.tokenTooltip?.updatePos()}processTokens(e){if(e.at(-1).alignRange.end<=this.maxLength)return e;let t=[],n=[],r=0;for(let i of e)r+=i.text.length,n.push(i),r>this.maxLength&&(t.push(this.trimChunk(n)),n=[],r=0);n.length&&t.push(this.trimChunk(n));let i=this.video.currentTime*1e3;return t.find(e=>e[0].startMs{if(this.tokenTooltip?.target===e.target&&this.tokenTooltip?.container){this.tokenTooltip.showed?e.target.classList.add(`selected`):e.target.classList.remove(`selected`);return}this.releaseTooltip(),e.target.classList.add(`selected`);let t=e.target.textContent.trim().replace(/[.|,]/,``),n=await p.d.get(`translationService`,s.mE),r=l.A.createSubtitleInfo(t,this.strTranslatedTokens||this.strTokens,n);this.tokenTooltip=new u.A({target:e.target,anchor:this.subtitlesBlock,layoutRoot:this.tooltipLayoutRoot,content:r.container,parentElement:this.portal,maxWidth:this.subtitlesContainer.offsetWidth,borderRadius:12,bordered:!1,position:`top`,trigger:`click`}),this.tokenTooltip.create();let i=this.strTokens,a=await this.translateStrTokens(t);i!==this.strTokens||!this.tokenTooltip?.showed||(r.header.textContent=a[1],r.context.textContent=a[0],this.tokenTooltip.setContent(r.container),this.tokenTooltip.create())};renderTokens(e,t){return e.map(e=>{let n=this.highlightWords&&(t>e.startMs+e.durationMs/2||t>e.startMs-100&&e.startMs+e.durationMs/2-t<275);return(0,o.qy)` ${e.text.replace(`\\n`,`
`)}
`})}setContent(e,t=void 0){if(this.releaseTooltip(),this.subtitleLang=t,!e||!this.video){this.subtitles=null,(0,o.XX)(null,this.subtitlesContainer);return}this.subtitles=e,this.update()}setMaxLength(e){typeof e==`number`&&e>0&&(this.maxLength=e,this.update())}setHighlightWords(e){this.highlightWords=!!e,this.update()}setFontSize(e){this.fontSize=e,this.subtitlesBlock&&(this.subtitlesBlock.style.fontSize=`${e}px`)}setOpacity(e){this.opacity=((100-e)/100).toFixed(2),this.subtitlesBlock&&this.subtitlesBlock.style.setProperty(`--vot-subtitles-opacity`,this.opacity)}stringifyTokens(e){return e.map(e=>e.text).join(``)}update(){if(!this.video||!this.subtitles)return;let e=this.video.currentTime*1e3,t=this.subtitles.subtitles.findLast(t=>t.startMs${r}`,this.subtitlesContainer),this.subtitlesBlock=this.subtitlesContainer.querySelector(`.vot-subtitles`)}}release(){this.abortController.abort(),this.resizeObserver.disconnect(),this.releaseTooltip(),this.subtitlesContainer.remove()}}r()}catch(e){r(e)}})},"./src/types/components/tooltip.ts":(e,t,n)=>{"use strict";n.d(t,{G:()=>i,X:()=>r});let r=[`left`,`top`,`right`,`bottom`],i=[`hover`,`click`]},"./src/types/components/votButton.ts":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});let r=[`default`,`top`,`left`,`right`],i=null},"./src/types/storage.ts":(e,t,n)=>{"use strict";n.d(t,{w:()=>r});let r=`autoTranslate.dontTranslateLanguages.enabledDontTranslateLanguages.enabledAutoVolume.autoVolume.buttonPos.showVideoSlider.syncVolume.downloadWithName.sendNotifyOnComplete.subtitlesMaxLength.highlightWords.subtitlesFontSize.subtitlesOpacity.subtitlesDownloadFormat.responseLanguage.defaultVolume.onlyBypassMediaCSP.newAudioPlayer.showPiPButton.translateAPIErrors.translationService.detectService.translationHotkey.m3u8ProxyHost.proxyWorkerHost.translateProxyEnabled.translateProxyEnabledDefault.audioBooster.useLivelyVoice.autoHideButtonDelay.useAudioDownload.compatVersion.localePhrases.localeLang.localeHash.localeUpdatedAt.localeLangOverride.account`.split(`.`)},"./src/ui.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/styles/main.scss`),o=n(`./src/localization/localizationProvider.ts`),s=e([o]);o=(s.then?(await s)():s)[0];class c{static createEl(e,t=[],n=null){let r=document.createElement(e);return t.length&&r.classList.add(...t),n!==null&&r.append(n),r}static createHeader(e,t=4){let n=c.createEl(`vot-block`,[`vot-header`,`vot-header-level-${t}`]);return n.append(e),n}static createInformation(e,t){let n=c.createEl(`vot-block`,[`vot-info`]),r=c.createEl(`vot-block`);(0,i.XX)(e,r);let a=c.createEl(`vot-block`);return(0,i.XX)(t,a),n.append(r,a),{container:n,header:r,value:a}}static createButton(e){let t=c.createEl(`vot-block`,[`vot-button`]);return t.append(e),t}static createTextButton(e){let t=c.createEl(`vot-block`,[`vot-text-button`]);return t.append(e),t}static createOutlinedButton(e){let t=c.createEl(`vot-block`,[`vot-outlined-button`]);return t.append(e),t}static createIconButton(e){let t=c.createEl(`vot-block`,[`vot-icon-button`]);return(0,i.XX)(e,t),t}static createInlineLoader(){return c.createEl(`vot-block`,[`vot-inline-loader`])}static createPortal(e=!1){return c.createEl(`vot-block`,[`vot-portal${e?`-local`:``}`])}static createSubtitleInfo(e,t,n){let r=c.createEl(`vot-block`,[`vot-subtitles-info`]);r.id=`vot-subtitles-info`;let i=c.createEl(`vot-block`,[`vot-subtitles-info-service`],o.j.get(`VOTTranslatedBy`).replace(`{0}`,n)),a=c.createEl(`vot-block`,[`vot-subtitles-info-header`],e),s=c.createEl(`vot-block`,[`vot-subtitles-info-context`],t);return r.append(i,a,s),{container:r,translatedWith:i,header:a,context:s}}}r()}catch(e){r(e)}})},"./src/ui/components/accountButton.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>u});var i=n(`./src/config/config.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/localization/localizationProvider.ts`),s=n(`./src/ui.js`),c=n(`./src/ui/icons.ts`),l=e([o,s]);[o,s]=l.then?(await l)():l;class u{container;accountWrapper;buttons;usernameEl;avatarEl;avatarImg;actionButton;refreshButton;tokenButton;onClick=new a.Z;onRefresh=new a.Z;onClickSecret=new a.Z;_loggedIn;_username;_avatarId;constructor({loggedIn:e=!1,username:t=`unnamed`,avatarId:n=`0/0-0`}={}){this._loggedIn=e,this._username=t,this._avatarId=n;let r=this.createElements();this.container=r.container,this.accountWrapper=r.accountWrapper,this.buttons=r.buttons,this.usernameEl=r.usernameEl,this.avatarEl=r.avatarEl,this.avatarImg=r.avatarImg,this.actionButton=r.actionButton,this.refreshButton=r.refreshButton,this.tokenButton=r.tokenButton}createElements(){let e=s.A.createEl(`vot-block`,[`vot-account`]),t=s.A.createEl(`vot-block`,[`vot-account-wrapper`]);t.hidden=!this._loggedIn;let n=s.A.createEl(`img`,[`vot-account-avatar-img`]);n.src=`${i.cL}/${this._avatarId}/islands-retina-middle`,n.loading=`lazy`,n.alt=`user avatar`;let r=s.A.createEl(`vot-block`,[`vot-account-avatar`],n),a=s.A.createEl(`vot-block`,[`vot-account-username`]);a.textContent=this._username,t.append(r,a);let o=s.A.createEl(`vot-block`,[`vot-account-buttons`]),l=s.A.createOutlinedButton(this.buttonText);l.addEventListener(`click`,()=>{this.onClick.dispatch()});let u=s.A.createIconButton(c.GA);u.hidden=this._loggedIn,u.addEventListener(`click`,()=>{this.onClickSecret.dispatch()});let d=s.A.createIconButton(c.M9);return d.addEventListener(`click`,()=>{this.onRefresh.dispatch()}),o.append(l,u,d),e.append(t,o),{container:e,accountWrapper:t,buttons:o,usernameEl:a,avatarImg:n,avatarEl:r,actionButton:l,refreshButton:d,tokenButton:u}}addEventListener(e,t){switch(e){case`click`:this.onClick.addListener(t);break;case`click:secret`:this.onClickSecret.addListener(t);break;case`refresh`:this.onRefresh.addListener(t);break}return this}removeEventListener(e,t){switch(e){case`click`:this.onClick.removeListener(t);break;case`click:secret`:this.onClickSecret.removeListener(t);break;case`refresh`:this.onRefresh.removeListener(t);break}return this}get buttonText(){return this._loggedIn?o.j.get(`VOTLogout`):o.j.get(`VOTLogin`)}get loggedIn(){return this._loggedIn}set loggedIn(e){this._loggedIn=e,this.accountWrapper.hidden=!this._loggedIn,this.actionButton.textContent=this.buttonText,this.tokenButton.hidden=this._loggedIn}get avatarId(){return this._avatarId}set avatarId(e){this._avatarId=e??`0/0-0`,this.avatarImg.src=`${i.cL}/${this._avatarId}/islands-retina-middle`}get username(){return this._username}set username(e){this._username=e??`unnamed`,this.usernameEl.textContent=this._username}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/checkbox.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/ui.js`),s=e([o]);o=(s.then?(await s)():s)[0];class c{container;input;label;onChange=new a.Z;_labelHtml;_checked;_isSubCheckbox;constructor({labelHtml:e,checked:t=!1,isSubCheckbox:n=!1}){this._labelHtml=e,this._checked=t,this._isSubCheckbox=n;let r=this.createElements();this.container=r.container,this.input=r.input,this.label=r.label}createElements(){let e=o.A.createEl(`label`,[`vot-checkbox`]);this._isSubCheckbox&&e.classList.add(`vot-checkbox-sub`);let t=document.createElement(`input`);t.type=`checkbox`,t.checked=this._checked,t.addEventListener(`change`,()=>{this._checked=t.checked,this.onChange.dispatch(this._checked)});let n=o.A.createEl(`span`);return(0,i.XX)(this._labelHtml,n),e.append(t,n),{container:e,input:t,label:n}}addEventListener(e,t){return this.onChange.addListener(t),this}removeEventListener(e,t){return this.onChange.removeListener(t),this}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}get disabled(){return this.input.disabled}set disabled(e){this.input.disabled=e}get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=this.input.checked=e,this.onChange.dispatch(this._checked))}}r()}catch(e){r(e)}})},"./src/ui/components/details.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>l});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/ui.js`),s=n(`./src/ui/icons.ts`),c=e([o]);o=(c.then?(await c)():c)[0];class l{container;header;arrowIcon;onClick=new a.Z;_titleHtml;constructor({titleHtml:e}){this._titleHtml=e;let t=this.createElements();this.container=t.container,this.header=t.header,this.arrowIcon=t.arrowIcon}createElements(){let e=o.A.createEl(`vot-block`,[`vot-details`]),t=o.A.createEl(`vot-block`);t.append(this._titleHtml);let n=o.A.createEl(`vot-block`,[`vot-details-arrow-icon`]);return(0,i.XX)(s.mQ,n),e.append(t,n),e.addEventListener(`click`,()=>{this.onClick.dispatch()}),{container:e,header:t,arrowIcon:n}}addEventListener(e,t){return this.onClick.addListener(t),this}removeEventListener(e,t){return this.onClick.removeListener(t),this}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/dialog.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./src/core/eventImpl.ts`),a=n(`./src/ui.js`),o=n(`./src/ui/icons.ts`),s=e([a]);a=(s.then?(await s)():s)[0];class c{container;backdrop;box;contentWrapper;headerContainer;titleContainer;title;closeButton;bodyContainer;footerContainer;onClose=new i.Z;_titleHtml;_isTemp;constructor({titleHtml:e,isTemp:t=!1}){this._titleHtml=e,this._isTemp=t;let n=this.createElements();this.container=n.container,this.backdrop=n.backdrop,this.box=n.box,this.contentWrapper=n.contentWrapper,this.headerContainer=n.headerContainer,this.titleContainer=n.titleContainer,this.title=n.title,this.closeButton=n.closeButton,this.bodyContainer=n.bodyContainer,this.footerContainer=n.footerContainer}createElements(){let e=a.A.createEl(`vot-block`,[`vot-dialog-container`]);this._isTemp&&e.classList.add(`vot-dialog-temp`),e.hidden=!this._isTemp;let t=a.A.createEl(`vot-block`,[`vot-dialog-backdrop`]),n=a.A.createEl(`vot-block`,[`vot-dialog`]),r=a.A.createEl(`vot-block`,[`vot-dialog-content-wrapper`]),i=a.A.createEl(`vot-block`,[`vot-dialog-header-container`]),s=a.A.createEl(`vot-block`,[`vot-dialog-title-container`]),c=a.A.createEl(`vot-block`,[`vot-dialog-title`]);c.append(this._titleHtml),s.appendChild(c);let l=a.A.createIconButton(o.jr);l.classList.add(`vot-dialog-close-button`),t.addEventListener(`click`,()=>{this.close()}),l.addEventListener(`click`,()=>{this.close()}),i.append(s,l);let u=a.A.createEl(`vot-block`,[`vot-dialog-body-container`]),d=a.A.createEl(`vot-block`,[`vot-dialog-footer-container`]);return r.append(i,u,d),n.appendChild(r),e.append(t,n),{container:e,backdrop:t,box:n,contentWrapper:r,headerContainer:i,titleContainer:s,title:c,closeButton:l,bodyContainer:u,footerContainer:d}}addEventListener(e,t){return this.onClose.addListener(t),this}removeEventListener(e,t){return this.onClose.removeListener(t),this}open(){return this.hidden=!1,this}remove(){return this.container.remove(),this.onClose.dispatch(),this}close(){return this._isTemp?this.remove():(this.hidden=!0,this.onClose.dispatch(),this)}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}get isDialogOpen(){return!this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/downloadButton.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./src/core/eventImpl.ts`),a=n(`./src/ui.js`),o=n(`./src/ui/icons.ts`),s=e([a]);a=(s.then?(await s)():s)[0];class c{button;loaderMain;loaderText;onClick=new i.Z;_progress=0;constructor(){let e=this.createElements();this.button=e.button,this.loaderMain=e.loaderMain,this.loaderText=e.loaderText}createElements(){let e=a.A.createIconButton(o.nO),t=e.querySelector(`.vot-loader-main`),n=e.querySelector(`.vot-loader-text`);return e.addEventListener(`click`,()=>{this.onClick.dispatch()}),{button:e,loaderMain:t,loaderText:n}}addEventListener(e,t){return this.onClick.addListener(t),this}removeEventListener(e,t){return this.onClick.removeListener(t),this}get progress(){return this._progress}set progress(e){this._progress=e,this.loaderText.textContent=e===0?``:e.toString(),!(e>1)&&(this.loaderMain.style.opacity=e===0?`1`:`0`)}set hidden(e){this.button.hidden=e}get hidden(){return this.button.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/hotkeyButton.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c,_:()=>l});var i=n(`./src/core/eventImpl.ts`),a=n(`./src/localization/localizationProvider.ts`),o=n(`./src/ui.js`),s=e([a,o]);[a,o]=s.then?(await s)():s;class c{container;button;onChange=new i.Z;_labelHtml;_key;pressedKeys;recording=!1;constructor({labelHtml:e,key:t=null}){this._labelHtml=e,this._key=t,this.pressedKeys=new Set;let n=this.createElements();this.container=n.container,this.button=n.button}stopRecordingKeys(){this.recording=!1,document.removeEventListener(`keydown`,this.keydownHandle),document.removeEventListener(`keyup`,this.keyupOrBlurHandle),document.removeEventListener(`blur`,this.keyupOrBlurHandle),this.button.removeAttribute(`data-status`),this.pressedKeys.clear()}keydownHandle=e=>{if(!(!this.recording||e.repeat)){if(e.preventDefault(),e.code===`Escape`){this.key=null,this.button.textContent=this.keyText,this.stopRecordingKeys();return}this.pressedKeys.add(e.code),this.button.textContent=l(this.pressedKeys)}};keyupOrBlurHandle=()=>{this.recording&&(this.key=l(this.pressedKeys),this.stopRecordingKeys())};createElements(){let e=o.A.createEl(`vot-block`,[`vot-hotkey`]),t=o.A.createEl(`vot-block`,[`vot-hotkey-label`]);t.textContent=this._labelHtml;let n=o.A.createEl(`vot-block`,[`vot-hotkey-button`]);return n.textContent=this.keyText,n.addEventListener(`click`,()=>{n.dataset.status=`active`,this.recording=!0,this.pressedKeys.clear(),this.button.textContent=a.j.get(`PressTheKeyCombination`),document.addEventListener(`keydown`,this.keydownHandle),document.addEventListener(`keyup`,this.keyupOrBlurHandle),document.addEventListener(`blur`,this.keyupOrBlurHandle)}),e.append(t,n),{container:e,button:n,label:t}}addEventListener(e,t){return this.onChange.addListener(t),this}removeEventListener(e,t){return this.onChange.removeListener(t),this}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}get key(){return this._key}get keyText(){return this._key?this._key?.replace(`Key`,``).replace(`Digit`,``):a.j.get(`None`)}set key(e){this._key!==e&&(this._key=e,this.button.textContent=this.keyText,this.onChange.dispatch(this._key))}}function l(e){let t=Array.isArray(e)?e:Array.from(e);return t.map(e=>e.replace(`Key`,``).replace(`Digit`,``)).join(`+`)}r()}catch(e){r(e)}})},"./src/ui/components/label.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>s});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/ui.js`),o=e([a]);a=(o.then?(await o)():o)[0];class s{container;icon;_labelText;_icon;constructor({labelText:e,icon:t}){this._labelText=e,this._icon=t;let n=this.createElements();this.container=n.container,this.icon=n.icon}createElements(){let e=a.A.createEl(`vot-block`,[`vot-label`]);e.textContent=this._labelText;let t=a.A.createEl(`vot-block`,[`vot-label-icon`]);return this._icon&&(0,i.XX)(this._icon,t),e.appendChild(t),{container:e,icon:t}}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/languagePairSelect.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>u});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/localization/localizationProvider.ts`),o=n(`./src/ui.js`),s=n(`./src/ui/icons.ts`),c=n(`./src/ui/components/select.ts`),l=e([a,o,c]);[a,o,c]=l.then?(await l)():l;class u{container;fromSelect;directionIcon;toSelect;dialogParent;_fromSelectTitle;_fromDialogTitle;_fromItems;_toSelectTitle;_toDialogTitle;_toItems;constructor({from:{selectTitle:e=a.j.get(`videoLanguage`),dialogTitle:t=a.j.get(`videoLanguage`),items:n},to:{selectTitle:r=a.j.get(`translationLanguage`),dialogTitle:i=a.j.get(`translationLanguage`),items:o},dialogParent:s=document.documentElement}){this._fromSelectTitle=e,this._fromDialogTitle=t,this._fromItems=n,this._toSelectTitle=r,this._toDialogTitle=i,this._toItems=o,this.dialogParent=s;let c=this.createElements();this.container=c.container,this.fromSelect=c.fromSelect,this.directionIcon=c.directionIcon,this.toSelect=c.toSelect}createElements(){let e=o.A.createEl(`vot-block`,[`vot-lang-select`]),t=new c.A({selectTitle:this._fromSelectTitle,dialogTitle:this._fromDialogTitle,items:this._fromItems,dialogParent:this.dialogParent}),n=o.A.createEl(`vot-block`,[`vot-lang-select-icon`]);(0,i.XX)(s.z3,n);let r=new c.A({selectTitle:this._toSelectTitle,dialogTitle:this._toDialogTitle,items:this._toItems,dialogParent:this.dialogParent});return e.append(t.container,n,r.container),{container:e,fromSelect:t,directionIcon:n,toSelect:r}}setSelectedValues(e,t){return this.fromSelect.setSelectedValue(e),this.toSelect.setSelectedValue(t),this}updateItems(e,t){return this._fromItems=e,this._toItems=t,this.fromSelect=this.fromSelect.updateItems(e),this.toSelect=this.toSelect.updateItems(t),this}}r()}catch(e){r(e)}})},"./src/ui/components/select.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>f});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/localization/localizationProvider.ts`),s=n(`./src/ui.js`),c=n(`./src/ui/icons.ts`),l=n(`./src/ui/components/dialog.ts`),u=n(`./src/ui/components/textfield.ts`),d=e([o,s,l,u]);[o,s,l,u]=d.then?(await d)():d;class f{container;outer;arrowIcon;title;dialogParent;labelElement;_selectTitle;_dialogTitle;multiSelect;_items;isLoading=!1;isDialogOpen=!1;onSelectItem=new a.Z;onBeforeOpen=new a.Z;contentList;selectedItems=[];selectedValues;constructor({selectTitle:e,dialogTitle:t,items:n,labelElement:r,dialogParent:i=document.documentElement,multiSelect:a}){this._selectTitle=e,this._dialogTitle=t,this._items=n,this.multiSelect=a??!1,this.labelElement=r,this.dialogParent=i,this.selectedValues=this.calcSelectedValues();let o=this.createElements();this.container=o.container,this.outer=o.outer,this.arrowIcon=o.arrowIcon,this.title=o.title}static genLanguageItems(e,t){return e.map(e=>{let n=`langs.${e}`,r=o.j.get(n);return{label:r===n?e.toUpperCase():r,value:e,selected:t===e}})}multiSelectItemHandle=(e,t)=>{let n=t.value;this.selectedValues.has(n)&&this.selectedValues.size>1?(this.selectedValues.delete(n),t.selected=!1):(this.selectedValues.add(n),t.selected=!0),e.dataset.votSelected=this.selectedValues.has(n).toString(),this.updateSelectedState(),this.onSelectItem.dispatch(Array.from(this.selectedValues))};singleSelectItemHandle=e=>{let t=e.value;this.selectedValues=new Set([t]);for(let e of this.selectedItems)e.dataset.votSelected=(e.dataset.votValue===t).toString();for(let e of this._items)e.selected=e.value===t;this.updateTitle(),this.onSelectItem.dispatch(t)};createDialogContentList(){let e=s.A.createEl(`vot-block`,[`vot-select-content-list`]);for(let t of this._items){let n=s.A.createEl(`vot-block`,[`vot-select-content-item`]);n.textContent=t.label,n.dataset.votSelected=t.selected===!0?`true`:`false`,n.dataset.votValue=t.value,t.disabled&&(n.inert=!0),n.addEventListener(`click`,e=>{if(!e.target.inert)return this.multiSelect?this.multiSelectItemHandle(n,t):this.singleSelectItemHandle(t)}),e.appendChild(n)}return this.selectedItems=Object.values(e.childNodes),e}createElements(){let e=s.A.createEl(`vot-block`,[`vot-select`]);this.labelElement&&e.append(this.labelElement);let t=s.A.createEl(`vot-block`,[`vot-select-outer`]),n=s.A.createEl(`vot-block`,[`vot-select-title`]);n.textContent=this.visibleText;let r=s.A.createEl(`vot-block`,[`vot-select-arrow-icon`]);return(0,i.XX)(c.mQ,r),t.append(n,r),t.addEventListener(`click`,()=>{if(!(this.isLoading||this.isDialogOpen))try{this.isLoading=!0;let e=new l.A({titleHtml:this._dialogTitle,isTemp:!0});this.onBeforeOpen.dispatch(e),this.dialogParent.appendChild(e.container);let t=new u.A({labelHtml:o.j.get(`searchField`)});t.addEventListener(`input`,e=>{for(let t of this.selectedItems)t.hidden=!t.textContent?.toLowerCase().includes(e)}),this.contentList=this.createDialogContentList(),e.bodyContainer.append(t.container,this.contentList),e.addEventListener(`close`,()=>{this.isDialogOpen=!1,this.selectedItems=[]})}finally{this.isLoading=!1}}),e.appendChild(t),{container:e,outer:t,arrowIcon:r,title:n}}calcSelectedValues(){return new Set(this._items.filter(e=>e.selected).map(e=>e.value))}addEventListener(e,t){return e===`selectItem`?this.onSelectItem.addListener(t):e===`beforeOpen`&&this.onBeforeOpen.addListener(t),this}removeEventListener(e,t){return e===`selectItem`?this.onSelectItem.removeListener(t):e===`beforeOpen`&&this.onBeforeOpen.removeListener(t),this}updateTitle(){return this.title.textContent=this.visibleText,this}updateSelectedState(){if(this.selectedItems.length>0)for(let e of this.selectedItems){let t=e.dataset.votValue;if(!t)continue;e.dataset.votSelected=this.selectedValues.has(t).toString()}return this.updateTitle(),this}setSelectedValue(e){this.multiSelect?this.selectedValues=new Set(Array.isArray(e)?e.map(String):[String(e)]):this.selectedValues=new Set([String(e)]);for(let e of this._items)e.selected=this.selectedValues.has(String(e.value));return this.updateSelectedState(),this}updateItems(e){this._items=e,this.selectedValues=this.calcSelectedValues(),this.updateSelectedState();let t=this.contentList?.parentElement;if(!this.contentList||!t)return this;let n=this.contentList;return this.contentList=this.createDialogContentList(),t.replaceChild(this.contentList,n),this}get visibleText(){return this.multiSelect?this._items.filter(e=>this.selectedValues.has(e.value)).map(e=>e.label).join(`, `)??this._selectTitle:this._items.find(e=>e.selected)?.label??this._selectTitle}set selectTitle(e){this._selectTitle=e,this.updateTitle()}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/slider.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/ui.js`),s=e([o]);o=(s.then?(await s)():s)[0];class c{container;input;label;onInput=new a.Z;_labelHtml;_value;_min;_max;_step;constructor({labelHtml:e,value:t=50,min:n=0,max:r=100,step:i=1}){this._labelHtml=e,this._value=t,this._min=n,this._max=r,this._step=i;let a=this.createElements();this.container=a.container,this.input=a.input,this.label=a.label,this.update()}updateProgress(){let e=(this._value-this._min)/(this._max-this._min);return this.container.style.setProperty(`--vot-progress`,e.toString()),this}update(){return this._value=this.input.valueAsNumber,this._min=+this.input.min,this._max=+this.input.max,this.updateProgress(),this}createElements(){let e=o.A.createEl(`vot-block`,[`vot-slider`]),t=document.createElement(`input`);t.type=`range`,t.min=this._min.toString(),t.max=this._max.toString(),t.step=this._step.toString(),t.value=this._value.toString();let n=o.A.createEl(`span`);return(0,i.XX)(this._labelHtml,n),e.append(t,n),t.addEventListener(`input`,()=>{this.update(),this.onInput.dispatch(this._value,!1)}),{container:e,label:n,input:t}}addEventListener(e,t){return this.onInput.addListener(t),this}removeEventListener(e,t){return this.onInput.removeListener(t),this}get value(){return this._value}set value(e){this._value=e,this.input.value=e.toString(),this.updateProgress(),this.onInput.dispatch(this._value,!0)}get min(){return this._min}set min(e){this._min=e,this.input.min=this._min.toString(),this.updateProgress()}get max(){return this._max}set max(e){this._max=e,this.input.max=this._max.toString(),this.updateProgress()}get step(){return this._step}set step(e){this._step=e,this.input.step=this._step.toString()}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/sliderLabel.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>o});var i=n(`./src/ui.js`),a=e([i]);i=(a.then?(await a)():a)[0];class o{container;strong;_labelText;_labelEOL;_value;_symbol;constructor({labelText:e,labelEOL:t=``,value:n=50,symbol:r=`%`}){this._labelText=e,this._labelEOL=t,this._value=n,this._symbol=r;let i=this.createElements();this.container=i.container,this.strong=i.strong}createElements(){let e=i.A.createEl(`vot-block`,[`vot-slider-label`]);e.textContent=this.labelText;let t=i.A.createEl(`strong`,[`vot-slider-label-value`]);return t.textContent=this.valueText,e.append(t),{container:e,strong:t}}get labelText(){return`${this._labelText}${this._labelEOL}`}get valueText(){return`${this._value}${this._symbol}`}get value(){return this._value}set value(e){this._value=e,this.strong.textContent=this.valueText}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/textfield.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>s});var i=n(`./src/core/eventImpl.ts`),a=n(`./src/ui.js`),o=e([a]);a=(o.then?(await o)():o)[0];class s{container;input;label;onInput=new i.Z;onChange=new i.Z;_labelHtml;_multiline;_placeholder;_value;constructor({labelHtml:e=``,placeholder:t=``,value:n=``,multiline:r=!1}){this._labelHtml=e,this._multiline=r,this._placeholder=t,this._value=n;let i=this.createElements();this.container=i.container,this.input=i.input,this.label=i.label}createElements(){let e=a.A.createEl(`vot-block`,[`vot-textfield`]),t=document.createElement(this._multiline?`textarea`:`input`);this._labelHtml||t.classList.add(`vot-show-placeholer`),t.placeholder=this._placeholder,t.value=this._value;let n=a.A.createEl(`span`);return n.append(this._labelHtml),e.append(t,n),t.addEventListener(`input`,()=>{this._value=this.input.value,this.onInput.dispatch(this._value)}),t.addEventListener(`change`,()=>{this._value=this.input.value,this.onChange.dispatch(this._value)}),{container:e,label:n,input:t}}addEventListener(e,t){return e===`change`?this.onChange.addListener(t):e===`input`&&this.onInput.addListener(t),this}removeEventListener(e,t){return e===`change`?this.onChange.removeListener(t):e===`input`&&this.onInput.removeListener(t),this}get value(){return this._value}set value(e){this._value!==e&&(this.input.value=this._value=e,this.onChange.dispatch(this._value))}get placeholder(){return this._placeholder}set placeholder(e){this.input.placeholder=this._placeholder=e}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}}r()}catch(e){r(e)}})},"./src/ui/components/tooltip.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./src/types/components/tooltip.ts`),a=n(`./src/ui.js`),o=n(`./src/utils/utils.ts`),s=e([a,o]);[a,o]=s.then?(await s)():s;class c{showed=!1;target;anchor;content;position;trigger;parentElement;layoutRoot;offsetX;offsetY;hidden;autoLayout;pageWidth;pageHeight;globalOffsetX;globalOffsetY;maxWidth;backgroundColor;borderRadius;_bordered;container;onResizeObserver;intersectionObserver;constructor({target:e,anchor:t=void 0,content:n=``,position:r=`top`,trigger:i=`hover`,offset:a=4,maxWidth:o=void 0,hidden:s=!1,autoLayout:l=!0,backgroundColor:u=void 0,borderRadius:d=void 0,bordered:f=!0,parentElement:p=document.body,layoutRoot:m=document.documentElement}){if(!(e instanceof HTMLElement))throw Error(`target must be a valid HTMLElement`);this.target=e,this.anchor=t instanceof HTMLElement?t:e,this.content=n,typeof a==`number`?this.offsetY=this.offsetX=a:(this.offsetX=a.x,this.offsetY=a.y),this.hidden=s,this.autoLayout=l,this.trigger=c.validateTrigger(i)?i:`hover`,this.position=c.validatePos(r)?r:`top`,this.parentElement=p,this.layoutRoot=m,this.borderRadius=d,this._bordered=f,this.maxWidth=o,this.backgroundColor=u,this.updatePageSize(),this.init()}static validatePos(e){return i.X.includes(e)}static validateTrigger(e){return i.G.includes(e)}setPosition(e){return this.position=c.validatePos(e)?e:`top`,this.updatePos(),this}setContent(e){return this.content=e,this.destroy(),this}onResize=()=>{this.updatePageSize(),this.updatePos()};onClick=()=>{this.showed?this.destroy():this.create()};onScroll=()=>{requestAnimationFrame(()=>{this.updatePageSize(),this.updatePos()})};onHoverPointerDown=e=>{e.pointerType!==`mouse`&&this.create()};onHoverPointerUp=e=>{e.pointerType!==`mouse`&&this.destroy()};onMouseEnter=()=>{this.create()};onMouseLeave=()=>{this.destroy()};updatePageSize(){if(this.layoutRoot!==document.documentElement){let{left:e,top:t}=this.parentElement.getBoundingClientRect();this.globalOffsetX=e,this.globalOffsetY=t}else this.globalOffsetX=0,this.globalOffsetY=0;return this.pageWidth=(this.layoutRoot.clientWidth||document.documentElement.clientWidth)+window.pageXOffset,this.pageHeight=(this.layoutRoot.clientHeight||document.documentElement.clientHeight)+window.pageYOffset,this}onIntersect=([e])=>{if(!e.isIntersecting)return this.destroy(!0)};init(){return this.onResizeObserver=new ResizeObserver(this.onResize),this.intersectionObserver=new IntersectionObserver(this.onIntersect),document.addEventListener(`scroll`,this.onScroll,{passive:!0,capture:!0}),this.trigger===`click`?(this.target.addEventListener(`pointerdown`,this.onClick),this):(this.target.addEventListener(`mouseenter`,this.onMouseEnter),this.target.addEventListener(`mouseleave`,this.onMouseLeave),this.target.addEventListener(`pointerdown`,this.onHoverPointerDown),this.target.addEventListener(`pointerup`,this.onHoverPointerUp),this)}release(){return this.destroy(),document.removeEventListener(`scroll`,this.onScroll,{capture:!0}),this.trigger===`click`?(this.target.removeEventListener(`pointerdown`,this.onClick),this):(this.target.removeEventListener(`mouseenter`,this.onMouseEnter),this.target.removeEventListener(`mouseleave`,this.onMouseLeave),this.target.removeEventListener(`pointerdown`,this.onHoverPointerDown),this.target.removeEventListener(`pointerup`,this.onHoverPointerUp),this)}create(){return this.destroy(!0),this.showed=!0,this.container=a.A.createEl(`vot-block`,[`vot-tooltip`],this.content),this.bordered&&this.container.classList.add(`vot-tooltip-bordered`),this.container.setAttribute(`role`,`tooltip`),this.container.dataset.trigger=this.trigger,this.container.dataset.position=this.position,this.parentElement.appendChild(this.container),this.updatePos(),this.backgroundColor!==void 0&&(this.container.style.backgroundColor=this.backgroundColor),this.borderRadius!==void 0&&(this.container.style.borderRadius=`${this.borderRadius}px`),this.hidden&&(this.container.hidden=!0),this.container.style.opacity=`1`,this.onResizeObserver?.observe(this.layoutRoot),this.intersectionObserver?.observe(this.target),this}updatePos(){if(!this.container)return this;let{top:e,left:t}=this.calcPos(this.autoLayout),n=this.pageWidth-this.offsetX*2,r=this.maxWidth??Math.min(n,this.pageWidth-Math.min(t,this.pageWidth-n));return this.container.style.transform=`translate(${t}px, ${e}px)`,this.container.style.maxWidth=`${r}px`,this}calcPos(e=!0){if(!this.container)return{top:0,left:0};let{left:t,right:n,top:r,bottom:i,width:a,height:s}=this.anchor.getBoundingClientRect(),{width:c,height:l}=this.container.getBoundingClientRect(),u=(0,o.qE)(c,0,this.pageWidth),d=(0,o.qE)(l,0,this.pageHeight),f=t-this.globalOffsetX,p=n-this.globalOffsetX,m=r-this.globalOffsetY,h=i-this.globalOffsetY;switch(this.position){case`top`:{let t=(0,o.qE)(m-d-this.offsetY,0,this.pageHeight);return e&&t+this.offsetYthis.pageWidth-this.offsetX?(this.position=`left`,this.calcPos(!1)):{top:(0,o.qE)(m+(s-d)/2,this.offsetY,this.pageHeight-d-this.offsetY),left:t}}case`bottom`:{let t=(0,o.qE)(h+this.offsetY,0,this.pageHeight-d);return e&&t+d>this.pageHeight-this.offsetY?(this.position=`top`,this.calcPos(!1)):{top:t,left:(0,o.qE)(f-u/2+a/2,this.offsetX,this.pageWidth-u-this.offsetX)}}case`left`:{let t=Math.max(0,f-u-this.offsetX);return e&&t+u>f-this.offsetX?(this.position=`right`,this.calcPos(!1)):{top:(0,o.qE)(m+(s-d)/2,this.offsetY,this.pageHeight-d-this.offsetY),left:t}}default:return{top:0,left:0}}}destroy(e=!1){if(!this.container)return this;if(this.showed=!1,this.onResizeObserver?.disconnect(),this.intersectionObserver?.disconnect(),e)return this.container.remove(),this;let t=this.container;return t.style.opacity=`0`,t.addEventListener(`transitionend`,()=>{t?.remove()},{once:!0}),this}set bordered(e){this._bordered=e,this.container?.classList.toggle(`vot-tooltip-bordered`)}get bordered(){return this._bordered}}r()}catch(e){r(e)}})},"./src/ui/components/votButton.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>c});var i=n(`./node_modules/lit-html/lit-html.js`),a=n(`./src/ui.js`),o=n(`./src/ui/icons.ts`),s=e([a]);a=(s.then?(await s)():s)[0];class c{container;translateButton;separator;pipButton;separator2;menuButton;label;_position;_direction;_status;_labelHtml;constructor({position:e=`default`,direction:t=`default`,status:n=`none`,labelHtml:r=``}){this._position=e,this._direction=t,this._status=n,this._labelHtml=r;let i=this.createElements();this.container=i.container,this.translateButton=i.translateButton,this.separator=i.separator,this.pipButton=i.pipButton,this.separator2=i.separator2,this.menuButton=i.menuButton,this.label=i.label}static calcPosition(e,t){return t?e<=44?`left`:e>=66?`right`:`default`:`default`}static calcDirection(e){return[`default`,`top`].includes(e)?`row`:`column`}createElements(){let e=a.A.createEl(`vot-block`,[`vot-segmented-button`]);e.dataset.position=this._position,e.dataset.direction=this._direction,e.dataset.status=this._status;let t=a.A.createEl(`vot-block`,[`vot-segment`,`vot-translate-button`]);(0,i.XX)(o.cg,t);let n=a.A.createEl(`span`,[`vot-segment-label`]);n.append(this._labelHtml),t.appendChild(n);let r=a.A.createEl(`vot-block`,[`vot-separator`]),s=a.A.createEl(`vot-block`,[`vot-segment-only-icon`]);(0,i.XX)(o.B9,s);let c=a.A.createEl(`vot-block`,[`vot-separator`]),l=a.A.createEl(`vot-block`,[`vot-segment-only-icon`]);return(0,i.XX)(o.kO,l),e.append(t,r,s,c,l),{container:e,translateButton:t,separator:r,pipButton:s,separator2:c,menuButton:l,label:n}}showPiPButton(e){return this.separator2.hidden=this.pipButton.hidden=!e,this}setText(e){return this._labelHtml=this.label.textContent=e,this}remove(){return this.container.remove(),this}get tooltipPos(){switch(this.position){case`left`:return`right`;case`right`:return`left`;default:return`bottom`}}set status(e){this._status=this.container.dataset.status=e}get status(){return this._status}set loading(e){this.container.dataset.loading=e.toString()}get loading(){return this.container.dataset.loading===`true`}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}get position(){return this._position}set position(e){this._position=this.container.dataset.position=e}get direction(){return this._direction}set direction(e){this._direction=this.container.dataset.direction=e}set opacity(e){this.container.style.opacity=e.toString()}get opacity(){return Number(this.container.style.opacity)}}r()}catch(e){r(e)}})},"./src/ui/components/votMenu.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{A:()=>o});var i=n(`./src/ui.js`),a=e([i]);i=(a.then?(await a)():a)[0];class o{container;contentWrapper;headerContainer;bodyContainer;footerContainer;titleContainer;title;_position;_titleHtml;constructor({position:e=`default`,titleHtml:t=``}){this._position=e,this._titleHtml=t;let n=this.createElements();this.container=n.container,this.contentWrapper=n.contentWrapper,this.headerContainer=n.headerContainer,this.bodyContainer=n.bodyContainer,this.footerContainer=n.footerContainer,this.titleContainer=n.titleContainer,this.title=n.title}createElements(){let e=i.A.createEl(`vot-block`,[`vot-menu`]);e.hidden=!0,e.dataset.position=this._position;let t=i.A.createEl(`vot-block`,[`vot-menu-content-wrapper`]);e.appendChild(t);let n=i.A.createEl(`vot-block`,[`vot-menu-header-container`]),r=i.A.createEl(`vot-block`,[`vot-menu-title-container`]);n.appendChild(r);let a=i.A.createEl(`vot-block`,[`vot-menu-title`]);a.append(this._titleHtml),r.appendChild(a);let o=i.A.createEl(`vot-block`,[`vot-menu-body-container`]),s=i.A.createEl(`vot-block`,[`vot-menu-footer-container`]);return t.append(n,o,s),{container:e,contentWrapper:t,headerContainer:n,bodyContainer:o,footerContainer:s,titleContainer:r,title:a}}setText(e){return this._titleHtml=this.title.textContent=e,this}remove(){return this.container.remove(),this}set hidden(e){this.container.hidden=e}get hidden(){return this.container.hidden}get position(){return this._position}set position(e){this._position=this.container.dataset.position=e}}r()}catch(e){r(e)}})},"./src/ui/icons.ts":(e,t,n)=>{"use strict";n.d(t,{B9:()=>a,GA:()=>g,M9:()=>h,U0:()=>c,Xd:()=>p,c1:()=>l,cg:()=>i,jr:()=>f,kO:()=>o,mQ:()=>u,nO:()=>s,w2:()=>m,z3:()=>d});var r=n(`./node_modules/lit-html/lit-html.js`);let i=(0,r.JW)` `,a=(0,r.JW)` `,o=(0,r.JW)` `,s=(0,r.JW)` `,c=(0,r.JW)` `,l=(0,r.JW)` `,u=(0,r.JW)` `,d=(0,r.JW)` `,f=(0,r.JW)` `,p=(0,r.JW)` `,m=(0,r.JW)` `,h=(0,r.JW)` `,g=(0,r.JW)` `},"./src/ui/manager.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{o:()=>_});var i=n(`./node_modules/@vot.js/shared/dist/utils/subs.js`),a=n(`./src/ui.js`),o=n(`./src/config/config.js`),s=n(`./src/localization/localizationProvider.ts`),c=n(`./src/utils/VOTLocalizedError.js`),l=n(`./src/utils/debug.ts`),u=n(`./src/utils/gm.ts`),d=n(`./src/utils/storage.ts`),f=n(`./src/utils/utils.ts`),p=n(`./src/ui/components/votButton.ts`),m=n(`./src/ui/views/overlay.ts`),h=n(`./src/ui/views/settings.ts`),g=e([a,s,c,u,d,f,p,m,h]);[a,s,c,u,d,f,p,m,h]=g.then?(await g)():g;class _{root;portalContainer;tooltipLayoutRoot;initialized=!1;videoHandler;data;votGlobalPortal;votOverlayView;votSettingsView;constructor({root:e,portalContainer:t,tooltipLayoutRoot:n,data:r={},videoHandler:i}){this.root=e,this.portalContainer=t,this.tooltipLayoutRoot=n,this.videoHandler=i,this.data=r}isInitialized(){return this.initialized}initUI(){if(this.isInitialized())throw Error(`[VOT] UIManager is already initialized`);return this.initialized=!0,this.votGlobalPortal=a.A.createPortal(),document.documentElement.appendChild(this.votGlobalPortal),this.votOverlayView=new m.i({root:this.root,portalContainer:this.portalContainer,tooltipLayoutRoot:this.tooltipLayoutRoot,globalPortal:this.votGlobalPortal,data:this.data,videoHandler:this.videoHandler}),this.votOverlayView.initUI(),this.votSettingsView=new h.r({globalPortal:this.votGlobalPortal,data:this.data,videoHandler:this.videoHandler}),this.votSettingsView.initUI(),this}initUIEvents(){if(!this.isInitialized())throw Error(`[VOT] UIManager isn't initialized`);this.votOverlayView.initUIEvents(),this.votOverlayView.addEventListener(`click:translate`,async()=>{await this.handleTranslationBtnClick()}).addEventListener(`click:pip`,async()=>{if(!this.videoHandler)return;let e=this.videoHandler.video===document.pictureInPictureElement;await(e?document.exitPictureInPicture():this.videoHandler.video.requestPictureInPicture())}).addEventListener(`click:settings`,async()=>{this.videoHandler?.subtitlesWidget.releaseTooltip(),this.votSettingsView.open(),await(0,f.Eh)()}).addEventListener(`click:downloadTranslation`,async()=>{if(!(!this.votOverlayView.isInitialized()||!this.videoHandler?.downloadTranslationUrl||!this.videoHandler.videoData)){try{if(!this.data.downloadWithName||!u.yx)return(0,f.Wo)(this.videoHandler.downloadTranslationUrl);this.votOverlayView.downloadTranslationButton.progress=0;let e=await(0,u.G3)(this.videoHandler.downloadTranslationUrl,{timeout:0});if(!e.ok)throw Error(`HTTP ${e.status}`);let t=(0,f.Le)(this.videoHandler.videoData.downloadTitle);await(0,f.MR)(e,t,e=>{this.votOverlayView.downloadTranslationButton.progress=e})}catch(e){console.error(`[VOT] Download translation failed:`,e),(0,f.Wo)(this.videoHandler.downloadTranslationUrl)}this.votOverlayView.downloadTranslationButton.progress=0}}).addEventListener(`click:downloadSubtitles`,async()=>{if(!this.videoHandler||!this.videoHandler.yandexSubtitles||!this.videoHandler.videoData)return;let e=this.data.subtitlesDownloadFormat??`json`,t=(0,i.vk)(this.videoHandler.yandexSubtitles,e),n=new Blob([e===`json`?JSON.stringify(t):t],{type:`text/plain`}),r=this.data.downloadWithName?(0,f.Le)(this.videoHandler.videoData.downloadTitle):`subtitles_${this.videoHandler.videoData.videoId}`;(0,f.WN)(n,`${r}.${e}`)}).addEventListener(`input:videoVolume`,e=>{this.videoHandler&&(this.videoHandler.setVideoVolume(e/100),this.data.syncVolume&&this.videoHandler.syncVolumeWrapper(`video`,e))}).addEventListener(`input:translationVolume`,()=>{if(!this.videoHandler)return;let e=this.data.defaultVolume??100;this.videoHandler.audioPlayer.player.volume=e/100,this.data.syncVolume&&(this.videoHandler.syncVolumeWrapper(`translation`,e),[`youtube`,`googledrive`].includes(this.videoHandler.site.host)&&this.videoHandler.site.additionalData!==`mobile`&&this.videoHandler.setVideoVolume(this.videoHandler.tempOriginalVolume/100))}).addEventListener(`select:subtitles`,async e=>{await this.videoHandler?.changeSubtitlesLang(e)}),this.votSettingsView.initUIEvents(),this.votSettingsView.addEventListener(`update:account`,async e=>{this.videoHandler&&(this.videoHandler.votClient.apiToken=e?.token)}).addEventListener(`change:autoTranslate`,async e=>{e&&this.videoHandler&&!this.videoHandler?.hasActiveSource()&&await this.handleTranslationBtnClick()}).addEventListener(`change:showVideoVolume`,()=>{this.votOverlayView.isInitialized()&&(this.votOverlayView.videoVolumeSlider.container.hidden=!this.data.showVideoSlider||this.votOverlayView.votButton.status!==`success`)}).addEventListener(`change:audioBuster`,async()=>{if(!this.votOverlayView.isInitialized())return;let e=this.votOverlayView.translationVolumeSlider.value;this.votOverlayView.translationVolumeSlider.max=this.data.audioBooster?o.T8:100,this.votOverlayView.translationVolumeSlider.value=(0,f.qE)(e,0,100)}).addEventListener(`change:useLivelyVoice`,()=>{this.videoHandler?.stopTranslate()}).addEventListener(`change:subtitlesHighlightWords`,e=>{this.videoHandler?.subtitlesWidget.setHighlightWords(this.data.highlightWords??e)}).addEventListener(`input:subtitlesMaxLength`,e=>{this.videoHandler?.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength??e)}).addEventListener(`input:subtitlesFontSize`,e=>{this.videoHandler?.subtitlesWidget.setFontSize(this.data.subtitlesFontSize??e)}).addEventListener(`input:subtitlesBackgroundOpacity`,e=>{this.videoHandler?.subtitlesWidget.setOpacity(this.data.subtitlesOpacity??e)}).addEventListener(`change:proxyWorkerHost`,e=>{!this.data.translateProxyEnabled||!this.videoHandler||(this.videoHandler.votClient.host=this.data.proxyWorkerHost??e)}).addEventListener(`select:proxyTranslationStatus`,()=>{this.videoHandler?.initVOTClient()}).addEventListener(`change:useNewAudioPlayer`,()=>{this.videoHandler&&(this.videoHandler.stopTranslate(),this.videoHandler.createPlayer())}).addEventListener(`change:onlyBypassMediaCSP`,()=>{this.videoHandler&&(this.videoHandler.stopTranslate(),this.videoHandler.createPlayer())}).addEventListener(`select:translationTextService`,()=>{this.videoHandler&&(this.videoHandler.subtitlesWidget.strTranslatedTokens=``,this.videoHandler.subtitlesWidget.releaseTooltip())}).addEventListener(`change:showPiPButton`,()=>{this.votOverlayView.isInitialized()&&(this.votOverlayView.votButton.pipButton.hidden=this.votOverlayView.votButton.separator2.hidden=!this.votOverlayView.pipButtonVisible)}).addEventListener(`select:buttonPosition`,e=>{if(!this.votOverlayView.isInitialized())return;let t=this.data.buttonPos??e;this.votOverlayView.updateButtonLayout(t,p.A.calcDirection(t))}).addEventListener(`select:menuLanguage`,async()=>{await this.reloadMenu()}).addEventListener(`click:bugReport`,()=>{if(!this.videoHandler)return;let e=new URLSearchParams(this.videoHandler.collectReportInfo()).toString();window.open(`${o.Ek}/issues/new?${e}`,`_blank`)?.focus()}).addEventListener(`click:resetSettings`,async()=>{let e=await d.d.list();await Promise.all(e.map(async e=>await d.d.delete(e))),await d.d.set(`compatVersion`,o.r4),window.location.reload()})}async reloadMenu(){if(!this.votOverlayView?.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);if(this.videoHandler?.stopTranslation(),this.release(),this.initUI(),this.initUIEvents(),!this.videoHandler)return this;await this.videoHandler.updateSubtitlesLangSelect(),this.videoHandler.subtitlesWidget.portal=this.votOverlayView.votOverlayPortal,this.videoHandler.subtitlesWidget.strTranslatedTokens=``}async handleTranslationBtnClick(){if(!this.votOverlayView?.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);if(!this.videoHandler)return this;if(l.A.log(`[handleTranslationBtnClick] click translationBtn`),this.videoHandler.hasActiveSource())return l.A.log(`[handleTranslationBtnClick] video has active source`),this.videoHandler.stopTranslation(),this;if(this.votOverlayView.votButton.status!==`none`||this.votOverlayView.votButton.loading)return l.A.log(`[handleTranslationBtnClick] translationBtn isn't in none state`),this.videoHandler.actionsAbortController.abort(),this.videoHandler.stopTranslation(),this;try{if(l.A.log(`[handleTranslationBtnClick] trying execute translation`),!this.videoHandler.videoData?.videoId)throw new c.n(`VOTNoVideoIDFound`);(this.videoHandler.site.host===`vk`&&this.videoHandler.site.additionalData===`clips`||this.videoHandler.site.host===`douyin`)&&(this.videoHandler.videoData=await this.videoHandler.getVideoData()),l.A.log(`[handleTranslationBtnClick] Run translateFunc`,this.videoHandler.videoData.videoId),await this.videoHandler.translateFunc(this.videoHandler.videoData.videoId,this.videoHandler.videoData.isStream,this.videoHandler.videoData.detectedLanguage,this.videoHandler.videoData.responseLanguage,this.videoHandler.videoData.translationHelp)}catch(e){if(console.error(`[VOT]`,e),!(e instanceof Error))return this.transformBtn(`error`,String(e)),this;let t=e.name===`VOTLocalizedError`?e.localizedMessage:e.message;this.transformBtn(`error`,t)}return this}isLoadingText(e){return typeof e==`string`&&(e.includes(s.j.get(`translationTake`))||e.includes(s.j.get(`TranslationDelayed`)))}transformBtn(e,t){if(!this.votOverlayView?.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);return this.votOverlayView.votButton.status=e,this.votOverlayView.votButton.loading=e===`error`&&this.isLoadingText(t),this.votOverlayView.votButton.setText(t),this.votOverlayView.votButtonTooltip.setContent(t),this}releaseUI(e=!1){if(!this.isInitialized())throw Error(`[VOT] UIManager isn't initialized`);return this.votOverlayView.releaseUI(!0),this.votSettingsView.releaseUI(!0),this.votGlobalPortal.remove(),this.initialized=e,this}releaseUIEvents(e=!1){if(!this.isInitialized())throw Error(`[VOT] UIManager isn't initialized`);return this.votOverlayView.releaseUIEvents(!1),this.votSettingsView.releaseUIEvents(!1),this.initialized=e,this}release(){return this.releaseUI(!0),this.releaseUIEvents(!1),this}}r()}catch(e){r(e)}})},"./src/ui/views/overlay.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{i:()=>S});var i=n(`./node_modules/@vot.js/shared/dist/data/consts.js`),a=n(`./src/ui.js`),o=n(`./src/ui/components/languagePairSelect.ts`),s=n(`./src/ui/components/select.ts`),c=n(`./src/ui/components/slider.ts`),l=n(`./src/ui/components/sliderLabel.ts`),u=n(`./src/ui/components/tooltip.ts`),d=n(`./src/ui/components/votButton.ts`),f=n(`./src/ui/components/votMenu.ts`),p=n(`./src/ui/icons.ts`),m=n(`./src/config/config.js`),h=n(`./src/core/eventImpl.ts`),g=n(`./src/localization/localizationProvider.ts`),_=n(`./src/utils/storage.ts`),v=n(`./src/utils/utils.ts`),y=n(`./src/ui/components/downloadButton.ts`),b=n(`./src/ui/components/label.ts`),x=e([a,o,s,c,l,u,d,f,g,_,v,y,b]);[a,o,s,c,l,u,d,f,g,_,v,y,b]=x.then?(await x)():x;class S{root;tooltipLayoutRoot;portalContainer;globalPortal;dragging=!1;initialized=!1;data;videoHandler;cancelDraggingEvents=[`pointercancel`,`touchcancel`];onClickSettings=new h.Z;onClickPiP=new h.Z;onClickTranslate=new h.Z;onClickDownloadTranslation=new h.Z;onClickDownloadSubtitles=new h.Z;onSelectFromLanguage=new h.Z;onSelectToLanguage=new h.Z;onSelectSubtitles=new h.Z;onInputVideoVolume=new h.Z;onInputTranslationVolume=new h.Z;votOverlayPortal;votButton;votButtonTooltip;votMenu;downloadTranslationButton;downloadSubtitlesButton;openSettingsButton;languagePairSelect;subtitlesSelectLabel;subtitlesSelect;videoVolumeSliderLabel;videoVolumeSlider;tranlsationVolumeSliderLabel;translationVolumeSlider;constructor({root:e,portalContainer:t,tooltipLayoutRoot:n,globalPortal:r,data:i={},videoHandler:a}){this.root=e,this.portalContainer=t,this.tooltipLayoutRoot=n,this.globalPortal=r,this.data=i,this.videoHandler=a}isInitialized(){return this.initialized}calcButtonLayout(e){return this.isBigContainer&&[`left`,`right`].includes(e)?{direction:`column`,position:e}:{direction:`row`,position:`default`}}addEventListener(e,t){switch(e){case`click:settings`:this.onClickSettings.addListener(t);break;case`click:pip`:this.onClickPiP.addListener(t);break;case`click:downloadTranslation`:this.onClickDownloadTranslation.addListener(t);break;case`click:downloadSubtitles`:this.onClickDownloadSubtitles.addListener(t);break;case`click:translate`:this.onClickTranslate.addListener(t);break;case`input:videoVolume`:this.onInputVideoVolume.addListener(t);break;case`input:translationVolume`:this.onInputTranslationVolume.addListener(t);break;case`select:fromLanguage`:this.onSelectFromLanguage.addListener(t);break;case`select:toLanguage`:this.onSelectToLanguage.addListener(t);break;case`select:subtitles`:this.onSelectSubtitles.addListener(t);break}return this}removeEventListener(e,t){switch(e){case`click:settings`:this.onClickSettings.removeListener(t);break;case`click:pip`:this.onClickPiP.removeListener(t);break;case`click:downloadTranslation`:this.onClickDownloadTranslation.removeListener(t);break;case`click:downloadSubtitles`:this.onClickDownloadSubtitles.removeListener(t);break;case`click:translate`:this.onClickTranslate.removeListener(t);break;case`input:videoVolume`:this.onInputVideoVolume.removeListener(t);break;case`input:translationVolume`:this.onInputTranslationVolume.removeListener(t);break;case`select:fromLanguage`:this.onSelectFromLanguage.removeListener(t);break;case`select:toLanguage`:this.onSelectToLanguage.removeListener(t);break;case`select:subtitles`:this.onSelectSubtitles.removeListener(t);break}return this}initUI(e=`default`){if(this.isInitialized())throw Error(`[VOT] OverlayView is already initialized`);this.initialized=!0;let{position:t,direction:n}=this.calcButtonLayout(e);this.votOverlayPortal=a.A.createPortal(!0),this.portalContainer.appendChild(this.votOverlayPortal),this.votButton=new d.A({position:t,direction:n,status:`none`,labelHtml:g.j.get(`translateVideo`)}),this.votButton.opacity=0,this.pipButtonVisible||this.votButton.showPiPButton(!1),this.root.appendChild(this.votButton.container),this.votButtonTooltip=new u.A({target:this.votButton.translateButton,content:g.j.get(`translateVideo`),position:this.votButton.tooltipPos,hidden:n===`row`,bordered:!1,parentElement:this.votOverlayPortal,layoutRoot:this.tooltipLayoutRoot}),this.votMenu=new f.A({titleHtml:g.j.get(`VOTSettings`),position:t}),this.root.appendChild(this.votMenu.container),this.downloadTranslationButton=new y.A,this.downloadTranslationButton.hidden=!0,this.downloadSubtitlesButton=a.A.createIconButton(p.U0),this.downloadSubtitlesButton.hidden=!0,this.openSettingsButton=a.A.createIconButton(p.c1),this.votMenu.headerContainer.append(this.downloadTranslationButton.button,this.downloadSubtitlesButton,this.openSettingsButton);let r=this.videoHandler?.videoData?.detectedLanguage??`en`,h=this.data.responseLanguage??`ru`;this.languagePairSelect=new o.A({from:{selectTitle:g.j.get(`langs.${r}`),items:s.A.genLanguageItems(i.xm,r)},to:{selectTitle:g.j.get(`langs.${h}`),items:s.A.genLanguageItems(i.Xh,h)}}),this.subtitlesSelectLabel=new b.A({labelText:g.j.get(`VOTSubtitles`)}),this.subtitlesSelect=new s.A({selectTitle:g.j.get(`VOTSubtitlesDisabled`),dialogTitle:g.j.get(`VOTSubtitles`),labelElement:this.subtitlesSelectLabel.container,dialogParent:this.globalPortal,items:[{label:g.j.get(`VOTSubtitlesDisabled`),value:`disabled`,selected:!0}]});let _=this.videoHandler?this.videoHandler.getVideoVolume()*100:100;this.videoVolumeSliderLabel=new l.A({labelText:g.j.get(`VOTVolume`),value:_}),this.videoVolumeSlider=new c.A({labelHtml:this.videoVolumeSliderLabel.container,value:_}),this.videoVolumeSlider.hidden=!this.data.showVideoSlider||this.votButton.status!==`success`;let v=this.data.defaultVolume??100;return this.tranlsationVolumeSliderLabel=new l.A({labelText:g.j.get(`VOTVolumeTranslation`),value:v}),this.translationVolumeSlider=new c.A({labelHtml:this.tranlsationVolumeSliderLabel.container,value:v,max:this.data.audioBooster?m.T8:100}),this.translationVolumeSlider.hidden=this.votButton.status!==`success`,this.votMenu.bodyContainer.append(this.languagePairSelect.container,this.subtitlesSelect.container,this.videoVolumeSlider.container,this.translationVolumeSlider.container),this}initUIEvents(){if(!this.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);this.votButton.container.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}),this.votButton.translateButton.addEventListener(`pointerdown`,async()=>{this.onClickTranslate.dispatch()}),this.votButton.pipButton.addEventListener(`pointerdown`,async()=>{this.onClickPiP.dispatch()}),this.votButton.menuButton.addEventListener(`pointerdown`,async()=>{this.votMenu.hidden=!this.votMenu.hidden});let e=e=>{this.dragging=!0,e.preventDefault()};this.votButton.container.addEventListener(`pointerdown`,e),this.root.addEventListener(`pointerup`,this.disableDragging),this.root.addEventListener(`pointermove`,this.handleContainerPointerMove),this.votButton.container.addEventListener(`touchstart`,e,{passive:!1}),this.root.addEventListener(`touchend`,this.disableDragging),this.root.addEventListener(`touchmove`,this.handleContainerTouchMove,{passive:!1});for(let e of this.cancelDraggingEvents)document.addEventListener(e,this.disableDragging);this.votMenu.container.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()});for(let e of[`pointerdown`,`mousedown`])this.votMenu.container.addEventListener(e,e=>{e.stopImmediatePropagation()});return this.downloadTranslationButton.addEventListener(`click`,async()=>{this.onClickDownloadTranslation.dispatch()}),this.downloadSubtitlesButton.addEventListener(`click`,async()=>{this.onClickDownloadSubtitles.dispatch()}),this.openSettingsButton.addEventListener(`click`,async()=>{this.onClickSettings.dispatch()}),this.languagePairSelect.fromSelect.addEventListener(`selectItem`,e=>{this.videoHandler?.videoData&&(this.videoHandler.videoData.detectedLanguage=e),this.onSelectFromLanguage.dispatch(e)}),this.languagePairSelect.toSelect.addEventListener(`selectItem`,async e=>{this.videoHandler?.videoData&&(this.videoHandler.translateToLang=this.videoHandler.videoData.responseLanguage=e),this.data.responseLanguage=e,await _.d.set(`responseLanguage`,this.data.responseLanguage),this.onSelectToLanguage.dispatch(e)}),this.subtitlesSelect.addEventListener(`beforeOpen`,async e=>{if(!this.videoHandler?.videoData)return;let t=`${this.videoHandler.videoData.videoId}_${this.videoHandler.videoData.detectedLanguage}_${this.videoHandler.videoData.responseLanguage}_${this.data.useLivelyVoice}`;if(this.videoHandler.cacheManager.getSubtitles(t))return;this.votButton.loading=!0;let n=a.A.createInlineLoader();n.style.margin=`0 auto`,e.footerContainer.appendChild(n),await this.videoHandler.loadSubtitles(),e.footerContainer.removeChild(n),this.votButton.loading=!1}),this.subtitlesSelect.addEventListener(`selectItem`,e=>{this.onSelectSubtitles.dispatch(e)}),this.videoVolumeSlider.addEventListener(`input`,(e,t)=>{this.videoVolumeSliderLabel.value=e,!t&&this.onInputVideoVolume.dispatch(e)}),this.translationVolumeSlider.addEventListener(`input`,async(e,t)=>{this.tranlsationVolumeSliderLabel.value=e,this.data.defaultVolume=e,await _.d.set(`defaultVolume`,this.data.defaultVolume),!t&&this.onInputTranslationVolume.dispatch(e)}),this}updateButtonLayout(e,t){return this.isInitialized()?(this.votMenu.position=e,this.votButton.position=e,this.votButton.direction=t,this.votButtonTooltip.hidden=t===`row`,this.votButtonTooltip.setPosition(this.votButton.tooltipPos),this):this}async moveButton(e){if(!this.isInitialized())return this;let t=d.A.calcPosition(e,this.isBigContainer);if(t===this.votButton.position)return this;let n=d.A.calcDirection(t);return this.data.buttonPos=t,this.updateButtonLayout(t,n),this.isBigContainer&&await _.d.set(`buttonPos`,t),this}async handleDragMove(e,t,n=this.root.getBoundingClientRect()){if(!this.dragging)return this;e.preventDefault();let r=t-n.left,i=r/n.width*100;return await this.moveButton(i),this}disableDragging=()=>{this.dragging=!1};handleContainerPointerMove=async e=>{await this.handleDragMove(e,e.clientX)};handleContainerTouchMove=async e=>{await this.handleDragMove(e,e.touches[0].clientX)};updateButtonOpacity(e){return!this.isInitialized()||!this.votMenu.hidden||(this.votButton.opacity=e),this}releaseUI(e=!1){if(!this.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);return this.votButton.remove(),this.votMenu.remove(),this.votButtonTooltip.release(),this.votOverlayPortal.remove(),this.initialized=e,this}releaseUIEvents(e=!1){if(!this.isInitialized())throw Error(`[VOT] OverlayView isn't initialized`);this.root.removeEventListener(`pointerup`,this.disableDragging),this.root.removeEventListener(`pointermove`,this.handleContainerPointerMove),this.root.removeEventListener(`touchend`,this.disableDragging),this.root.removeEventListener(`touchmove`,this.handleContainerTouchMove);for(let e of this.cancelDraggingEvents)document.removeEventListener(e,this.disableDragging);return this.onClickSettings.clear(),this.onClickPiP.clear(),this.onClickTranslate.clear(),this.onClickDownloadTranslation.clear(),this.onClickDownloadSubtitles.clear(),this.onSelectFromLanguage.clear(),this.onSelectToLanguage.clear(),this.onSelectSubtitles.clear(),this.onInputVideoVolume.clear(),this.onInputTranslationVolume.clear(),this.initialized=e,this}release(){return this.releaseUI(!0),this.releaseUIEvents(!1),this}get isBigContainer(){return this.root.clientWidth>550}get pipButtonVisible(){return(0,v.Bs)()&&!!this.data.showPiPButton}}r()}catch(e){r(e)}})},"./src/ui/views/settings.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{r:()=>P});var i=n(`./node_modules/@vot.js/core/dist/types/yandex.js`),a=n(`./node_modules/@vot.js/ext/dist/types/service.js`),o=n(`./node_modules/@vot.js/shared/dist/data/consts.js`),s=n(`./node_modules/lit-html/lit-html.js`),c=n(`./src/index.js`),l=n(`./src/audioDownloader/index.ts`),u=n(`./src/audioDownloader/strategies/index.ts`),d=n(`./src/config/config.js`),f=n(`./src/core/eventImpl.ts`),p=n(`./src/localization/localizationProvider.ts`),m=n(`./src/types/components/votButton.ts`),h=n(`./src/ui.js`),g=n(`./src/utils/debug.ts`),_=n(`./src/utils/gm.ts`),v=n(`./src/utils/storage.ts`),y=n(`./src/utils/translateApis.ts`),b=n(`./src/utils/utils.ts`),x=n(`./src/ui/components/accountButton.ts`),S=n(`./src/ui/components/checkbox.ts`),C=n(`./src/ui/components/details.ts`),w=n(`./src/ui/components/dialog.ts`),T=n(`./src/ui/components/hotkeyButton.ts`),E=n(`./src/ui/components/label.ts`),D=n(`./src/ui/components/select.ts`),O=n(`./src/ui/components/slider.ts`),k=n(`./src/ui/components/sliderLabel.ts`),A=n(`./src/ui/components/textfield.ts`),j=n(`./src/ui/components/tooltip.ts`),M=n(`./src/ui/icons.ts`),N=e([c,l,u,p,h,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j]);[c,l,u,p,h,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j]=N.then?(await N)():N;class P{globalPortal;initialized=!1;data;videoHandler;onClickBugReport=new f.Z;onClickResetSettings=new f.Z;onUpdateAccount=new f.Z;onChangeAutoTranslate=new f.Z;onChangeShowVideoVolume=new f.Z;onChangeAudioBooster=new f.Z;onChangeUseLivelyVoice=new f.Z;onChangeSubtitlesHighlightWords=new f.Z;onChangeProxyWorkerHost=new f.Z;onChangeUseNewAudioPlayer=new f.Z;onChangeOnlyBypassMediaCSP=new f.Z;onChangeShowPiPButton=new f.Z;onInputSubtitlesMaxLength=new f.Z;onInputSubtitlesFontSize=new f.Z;onInputSubtitlesBackgroundOpacity=new f.Z;onInputAutoHideButtonDelay=new f.Z;onSelectItemProxyTranslationStatus=new f.Z;onSelectItemTranslationTextService=new f.Z;onSelectItemButtonPosition=new f.Z;onSelectItemMenuLanguage=new f.Z;dialog;accountHeader;accountButton;accountButtonRefreshTooltip;accountButtonTokenTooltip;translationSettingsHeader;autoTranslateCheckbox;dontTranslateLanguagesCheckbox;dontTranslateLanguagesSelect;autoSetVolumeSliderLabel;autoSetVolumeCheckbox;autoSetVolumeSlider;showVideoVolumeSliderCheckbox;audioBoosterCheckbox;audioBoosterTooltip;syncVolumeCheckbox;downloadWithNameCheckbox;sendNotifyOnCompleteCheckbox;useLivelyVoiceCheckbox;useLivelyVoiceTooltip;useAudioDownloadCheckbox;useAudioDownloadCheckboxLabel;useAudioDownloadCheckboxTooltip;subtitlesSettingsHeader;subtitlesDownloadFormatSelectLabel;subtitlesDownloadFormatSelect;subtitlesDesignDetails;hotkeysSettingsHeader;translateHotkeyButton;proxySettingsHeader;proxyM3U8HostTextfield;proxyWorkerHostTextfield;proxyTranslationStatusSelectLabel;proxyTranslationStatusSelectTooltip;proxyTranslationStatusSelect;miscSettingsHeader;translateAPIErrorsCheckbox;useNewAudioPlayerCheckbox;useNewAudioPlayerTooltip;onlyBypassMediaCSPCheckbox;onlyBypassMediaCSPTooltip;translationTextServiceLabel;translationTextServiceSelect;translationTextServiceTooltip;detectServiceLabel;detectServiceSelect;appearanceDetails;aboutExtensionDetails;bugReportButton;resetSettingsButton;constructor({globalPortal:e,data:t={},videoHandler:n}){this.globalPortal=e,this.data=t,this.videoHandler=n}isInitialized(){return this.initialized}initUI(){if(this.isInitialized())throw Error(`[VOT] SettingsView is already initialized`);this.initialized=!0,this.dialog=new w.A({titleHtml:p.j.get(`VOTSettings`)}),this.globalPortal.appendChild(this.dialog.container),this.accountHeader=h.A.createHeader(p.j.get(`VOTMyAccount`)),this.accountButton=new x.A({avatarId:this.data.account?.avatarId,username:this.data.account?.username,loggedIn:!!this.data.account?.token}),v.d.isSupportOnlyLS?(this.accountButton.refreshButton.setAttribute(`disabled`,`true`),this.accountButton.actionButton.setAttribute(`disabled`,`true`)):this.accountButtonRefreshTooltip=new j.A({target:this.accountButton.refreshButton,content:p.j.get(`VOTRefresh`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}),this.accountButtonTokenTooltip=new j.A({target:this.accountButton.tokenButton,content:p.j.get(`VOTLoginViaToken`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}),this.translationSettingsHeader=h.A.createHeader(p.j.get(`translationSettings`)),this.autoTranslateCheckbox=new S.A({labelHtml:p.j.get(`VOTAutoTranslate`),checked:this.data.autoTranslate});let e=this.data.dontTranslateLanguages??[];this.dontTranslateLanguagesCheckbox=new S.A({labelHtml:p.j.get(`DontTranslateSelectedLanguages`),checked:this.data.enabledDontTranslateLanguages}),this.dontTranslateLanguagesSelect=new D.A({dialogParent:this.globalPortal,dialogTitle:p.j.get(`DontTranslateSelectedLanguages`),selectTitle:e.map(e=>p.j.get(`langs.${e}`)).join(`, `)??p.j.get(`DontTranslateSelectedLanguages`),items:D.A.genLanguageItems(o.xm).map(t=>({...t,selected:e.includes(t.value)})),multiSelect:!0,labelElement:this.dontTranslateLanguagesCheckbox.container});let t=this.data.autoVolume??d.JD;this.autoSetVolumeSliderLabel=new k.A({labelText:p.j.get(`VOTAutoSetVolume`),value:t}),this.autoSetVolumeCheckbox=new S.A({labelHtml:this.autoSetVolumeSliderLabel.container,checked:this.data.enabledAutoVolume??!0}),this.autoSetVolumeSlider=new O.A({labelHtml:this.autoSetVolumeCheckbox.container,value:t}),this.showVideoVolumeSliderCheckbox=new S.A({labelHtml:p.j.get(`showVideoVolumeSlider`),checked:this.data.showVideoSlider}),this.audioBoosterCheckbox=new S.A({labelHtml:p.j.get(`VOTAudioBooster`),checked:this.data.audioBooster}),this.videoHandler?.audioContext||(this.audioBoosterCheckbox.disabled=!0,this.audioBoosterTooltip=new j.A({target:this.audioBoosterCheckbox.container,content:p.j.get(`VOTNeedWebAudioAPI`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal})),this.syncVolumeCheckbox=new S.A({labelHtml:p.j.get(`VOTSyncVolume`),checked:this.data.syncVolume}),this.downloadWithNameCheckbox=new S.A({labelHtml:p.j.get(`VOTDownloadWithName`),checked:this.data.downloadWithName}),this.downloadWithNameCheckbox.disabled=!_.yx,this.sendNotifyOnCompleteCheckbox=new S.A({labelHtml:p.j.get(`VOTSendNotifyOnComplete`),checked:this.data.sendNotifyOnComplete}),this.useLivelyVoiceCheckbox=new S.A({labelHtml:p.j.get(`VOTUseLivelyVoice`),checked:this.data.useLivelyVoice}),this.useLivelyVoiceTooltip=new j.A({target:this.useLivelyVoiceCheckbox.container,content:p.j.get(`VOTAccountRequired`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal,hidden:!!this.data.account?.token}),this.data.account?.token||(this.useLivelyVoiceCheckbox.disabled=!0),this.useAudioDownloadCheckboxLabel=new E.A({labelText:p.j.get(`VOTUseAudioDownload`),icon:M.Xd}),this.useAudioDownloadCheckbox=new S.A({labelHtml:this.useAudioDownloadCheckboxLabel.container,checked:this.data.useAudioDownload}),_.B0||(this.useAudioDownloadCheckbox.disabled=!0),this.useAudioDownloadCheckboxTooltip=new j.A({target:this.useAudioDownloadCheckboxLabel.container,content:p.j.get(`VOTUseAudioDownloadWarning`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}),this.dialog.bodyContainer.append(this.accountHeader,this.accountButton.container,this.translationSettingsHeader,this.autoTranslateCheckbox.container,this.dontTranslateLanguagesSelect.container,this.autoSetVolumeSlider.container,this.showVideoVolumeSliderCheckbox.container,this.audioBoosterCheckbox.container,this.syncVolumeCheckbox.container,this.downloadWithNameCheckbox.container,this.sendNotifyOnCompleteCheckbox.container,this.useLivelyVoiceCheckbox.container,this.useAudioDownloadCheckbox.container),this.subtitlesSettingsHeader=h.A.createHeader(p.j.get(`subtitlesSettings`)),this.subtitlesDownloadFormatSelectLabel=new E.A({labelText:p.j.get(`VOTSubtitlesDownloadFormat`)}),this.subtitlesDownloadFormatSelect=new D.A({selectTitle:this.data.subtitlesDownloadFormat??p.j.get(`VOTSubtitlesDownloadFormat`),dialogTitle:p.j.get(`VOTSubtitlesDownloadFormat`),dialogParent:this.globalPortal,labelElement:this.subtitlesDownloadFormatSelectLabel.container,items:o.EG.map(e=>({label:e.toUpperCase(),value:e,selected:e===this.data.subtitlesDownloadFormat}))}),this.subtitlesDesignDetails=new C.A({titleHtml:p.j.get(`VOTSubtitlesDesign`)}),this.dialog.bodyContainer.append(this.subtitlesSettingsHeader,this.subtitlesDownloadFormatSelect.container,this.subtitlesDesignDetails.container),this.hotkeysSettingsHeader=h.A.createHeader(p.j.get(`hotkeysSettings`)),this.translateHotkeyButton=new T.A({labelHtml:p.j.get(`translateVideo`),key:this.data.translationHotkey}),this.dialog.bodyContainer.append(this.hotkeysSettingsHeader,this.translateHotkeyButton.container),this.proxySettingsHeader=h.A.createHeader(p.j.get(`proxySettings`)),this.proxyM3U8HostTextfield=new A.A({labelHtml:p.j.get(`VOTM3u8ProxyHost`),value:this.data.m3u8ProxyHost,placeholder:d.se}),this.proxyWorkerHostTextfield=new A.A({labelHtml:p.j.get(`VOTProxyWorkerHost`),value:this.data.proxyWorkerHost,placeholder:d.Pm});let n=[p.j.get(`VOTTranslateProxyDisabled`),p.j.get(`VOTTranslateProxyEnabled`),p.j.get(`VOTTranslateProxyEverything`)],r=this.data.translateProxyEnabled??0,i=c.k&&d.vZ.includes(c.k);this.proxyTranslationStatusSelectLabel=new E.A({icon:i?M.Xd:void 0,labelText:p.j.get(`VOTTranslateProxyStatus`)}),i&&(this.proxyTranslationStatusSelectTooltip=new j.A({target:this.proxyTranslationStatusSelectLabel.icon,content:p.j.get(`VOTTranslateProxyStatusDefault`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal})),this.proxyTranslationStatusSelect=new D.A({selectTitle:n[r],dialogTitle:p.j.get(`VOTTranslateProxyStatus`),dialogParent:this.globalPortal,labelElement:this.proxyTranslationStatusSelectLabel.container,items:n.map((e,t)=>({label:e,value:t.toString(),selected:t===r,disabled:t===0&&_.up}))}),this.dialog.bodyContainer.append(this.proxySettingsHeader,this.proxyM3U8HostTextfield.container,this.proxyWorkerHostTextfield.container,this.proxyTranslationStatusSelect.container),this.miscSettingsHeader=h.A.createHeader(p.j.get(`miscSettings`)),this.translateAPIErrorsCheckbox=new S.A({labelHtml:p.j.get(`VOTTranslateAPIErrors`),checked:this.data.translateAPIErrors??!0}),this.translateAPIErrorsCheckbox.hidden=p.j.lang===`ru`,this.useNewAudioPlayerCheckbox=new S.A({labelHtml:p.j.get(`VOTNewAudioPlayer`),checked:this.data.newAudioPlayer}),this.videoHandler?.audioContext||(this.useNewAudioPlayerCheckbox.disabled=!0,this.useNewAudioPlayerTooltip=new j.A({target:this.useNewAudioPlayerCheckbox.container,content:p.j.get(`VOTNeedWebAudioAPI`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}));let a=this.videoHandler?.site.needBypassCSP?`${p.j.get(`VOTOnlyBypassMediaCSP`)} (${p.j.get(`VOTMediaCSPEnabledOnSite`)})`:p.j.get(`VOTOnlyBypassMediaCSP`);this.onlyBypassMediaCSPCheckbox=new S.A({labelHtml:a,checked:this.data.onlyBypassMediaCSP,isSubCheckbox:!0}),this.videoHandler?.audioContext||(this.onlyBypassMediaCSPTooltip=new j.A({target:this.onlyBypassMediaCSPCheckbox.container,content:p.j.get(`VOTNeedWebAudioAPI`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal})),this.onlyBypassMediaCSPCheckbox.disabled=!this.data.newAudioPlayer&&!!this.videoHandler?.audioContext,this.data.newAudioPlayer||(this.onlyBypassMediaCSPCheckbox.hidden=!0),this.translationTextServiceLabel=new E.A({labelText:p.j.get(`VOTTranslationTextService`),icon:M.w2});let s=this.data.translationService??d.mE;this.translationTextServiceSelect=new D.A({selectTitle:p.j.get(`services.${s}`),dialogTitle:p.j.get(`VOTTranslationTextService`),dialogParent:this.globalPortal,labelElement:this.translationTextServiceLabel.container,items:y.vN.map(e=>({label:p.j.get(`services.${e}`),value:e,selected:e===s}))}),this.translationTextServiceTooltip=new j.A({target:this.translationTextServiceLabel.icon,content:p.j.get(`VOTNotAffectToVoice`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}),this.detectServiceLabel=new E.A({labelText:p.j.get(`VOTDetectService`)});let l=this.data.detectService??d.K2;return this.detectServiceSelect=new D.A({selectTitle:p.j.get(`services.${l}`),dialogTitle:p.j.get(`VOTDetectService`),dialogParent:this.globalPortal,labelElement:this.detectServiceLabel.container,items:y.qh.map(e=>({label:p.j.get(`services.${e}`),value:e,selected:e===l}))}),this.appearanceDetails=new C.A({titleHtml:p.j.get(`appearance`)}),this.aboutExtensionDetails=new C.A({titleHtml:p.j.get(`aboutExtension`)}),this.bugReportButton=h.A.createOutlinedButton(p.j.get(`VOTBugReport`)),this.resetSettingsButton=h.A.createButton(p.j.get(`resetSettings`)),this.dialog.bodyContainer.append(this.miscSettingsHeader,this.translateAPIErrorsCheckbox.container,this.useNewAudioPlayerCheckbox.container,this.onlyBypassMediaCSPCheckbox.container,this.translationTextServiceSelect.container,this.detectServiceSelect.container,this.appearanceDetails.container,this.aboutExtensionDetails.container,this.bugReportButton,this.resetSettingsButton),this}initUIEvents(){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);return this.accountButton.addEventListener(`click`,async()=>{if(!v.d.isSupportOnlyLS){if(this.accountButton.loggedIn)return await v.d.delete(`account`),this.data.account={},this.updateAccountInfo();window.open(d.xW,`_blank`)?.focus()}}),this.accountButton.addEventListener(`click:secret`,async()=>{let e=new w.A({titleHtml:p.j.get(`VOTLoginViaToken`),isTemp:!0});this.globalPortal.appendChild(e.container);let t=h.A.createEl(`vot-block`,void 0,p.j.get(`VOTYandexTokenInfo`)),n=new A.A({labelHtml:p.j.get(`VOTYandexToken`),value:this.data.account?.token});n.addEventListener(`change`,async e=>{this.data.account=e?{expires:Date.now()+3153418e4,token:e}:{},await v.d.set(`account`,this.data.account),this.updateAccountInfo()}),e.bodyContainer.append(t,n.container)}),this.accountButton.addEventListener(`refresh`,async()=>{v.d.isSupportOnlyLS||(this.data.account=await v.d.get(`account`,{}),this.updateAccountInfo())}),this.autoTranslateCheckbox.addEventListener(`change`,async e=>{this.data.autoTranslate=e,await v.d.set(`autoTranslate`,this.data.autoTranslate),g.A.log(`autoTranslate value changed. New value:`,e),this.onChangeAutoTranslate.dispatch(e)}),this.dontTranslateLanguagesCheckbox.addEventListener(`change`,async e=>{this.data.enabledDontTranslateLanguages=e,await v.d.set(`enabledDontTranslateLanguages`,this.data.enabledDontTranslateLanguages),g.A.log(`enabledDontTranslateLanguages value changed. New value:`,e)}),this.dontTranslateLanguagesSelect.addEventListener(`selectItem`,async e=>{this.data.dontTranslateLanguages=e,await v.d.set(`dontTranslateLanguages`,this.data.dontTranslateLanguages),g.A.log(`dontTranslateLanguages value changed. New value:`,e)}),this.autoSetVolumeCheckbox.addEventListener(`change`,async e=>{this.data.enabledAutoVolume=e,await v.d.set(`enabledAutoVolume`,this.data.enabledAutoVolume),g.A.log(`enabledAutoVolume value changed. New value:`,e)}),this.autoSetVolumeSlider.addEventListener(`input`,async e=>{this.data.autoVolume=this.autoSetVolumeSliderLabel.value=e,await v.d.set(`autoVolume`,this.data.autoVolume),g.A.log(`autoVolume value changed. New value:`,e)}),this.showVideoVolumeSliderCheckbox.addEventListener(`change`,async e=>{this.data.showVideoSlider=e,await v.d.set(`showVideoSlider`,this.data.showVideoSlider),g.A.log(`showVideoVolumeSlider value changed. New value:`,e),this.onChangeShowVideoVolume.dispatch(e)}),this.audioBoosterCheckbox.addEventListener(`change`,async e=>{this.data.audioBooster=e,await v.d.set(`audioBooster`,this.data.audioBooster),g.A.log(`audioBooster value changed. New value:`,e),this.onChangeAudioBooster.dispatch(e)}),this.syncVolumeCheckbox.addEventListener(`change`,async e=>{this.data.syncVolume=e,await v.d.set(`syncVolume`,this.data.syncVolume),g.A.log(`syncVolume value changed. New value:`,e)}),this.downloadWithNameCheckbox.addEventListener(`change`,async e=>{this.data.downloadWithName=e,await v.d.set(`downloadWithName`,this.data.downloadWithName),g.A.log(`downloadWithName value changed. New value:`,e)}),this.sendNotifyOnCompleteCheckbox.addEventListener(`change`,async e=>{this.data.sendNotifyOnComplete=e,await v.d.set(`sendNotifyOnComplete`,this.data.sendNotifyOnComplete),g.A.log(`sendNotifyOnComplete value changed. New value:`,e)}),this.useLivelyVoiceCheckbox.addEventListener(`change`,async e=>{this.data.useLivelyVoice=e,await v.d.set(`useLivelyVoice`,this.data.useLivelyVoice),g.A.log(`useLivelyVoice value changed. New value:`,e),this.onChangeUseLivelyVoice.dispatch(e)}),this.useAudioDownloadCheckbox.addEventListener(`change`,async e=>{this.data.useAudioDownload=e,await v.d.set(`useAudioDownload`,this.data.useAudioDownload),g.A.log(`useAudioDownload value changed. New value:`,e)}),this.subtitlesDownloadFormatSelect.addEventListener(`selectItem`,async e=>{this.data.subtitlesDownloadFormat=e,await v.d.set(`subtitlesDownloadFormat`,this.data.subtitlesDownloadFormat),g.A.log(`subtitlesDownloadFormat value changed. New value:`,e)}),this.subtitlesDesignDetails.addEventListener(`click`,()=>{let e=new w.A({titleHtml:p.j.get(`VOTSubtitlesDesign`),isTemp:!0});this.globalPortal.appendChild(e.container);let t=new S.A({labelHtml:p.j.get(`VOTHighlightWords`),checked:this.data.highlightWords}),n=this.data.subtitlesMaxLength??300,r=new k.A({labelText:p.j.get(`VOTSubtitlesMaxLength`),labelEOL:`:`,symbol:``,value:n}),i=new O.A({labelHtml:r.container,value:n,min:50,max:300}),a=this.data.subtitlesFontSize??20,o=new k.A({labelText:p.j.get(`VOTSubtitlesFontSize`),labelEOL:`:`,symbol:`px`,value:a}),s=new O.A({labelHtml:o.container,value:a,min:8,max:50}),c=this.data.subtitlesOpacity??20,l=new k.A({labelText:p.j.get(`VOTSubtitlesOpacity`),labelEOL:`:`,value:c}),u=new O.A({labelHtml:l.container,value:c});e.bodyContainer.append(t.container,i.container,s.container,u.container),t.addEventListener(`change`,async e=>{this.data.highlightWords=e,await v.d.set(`highlightWords`,this.data.highlightWords),g.A.log(`highlightWords value changed. New value:`,e),this.onChangeSubtitlesHighlightWords.dispatch(e)}),i.addEventListener(`input`,e=>{r.value=e,this.data.subtitlesMaxLength=e,v.d.set(`subtitlesMaxLength`,this.data.subtitlesMaxLength),g.A.log(`highlightWords value changed. New value:`,e),this.onInputSubtitlesMaxLength.dispatch(e)}),s.addEventListener(`input`,e=>{o.value=e,this.data.subtitlesFontSize=e,v.d.set(`subtitlesFontSize`,this.data.subtitlesFontSize),g.A.log(`subtitlesFontSize value changed. New value:`,e),this.onInputSubtitlesFontSize.dispatch(e)}),u.addEventListener(`input`,e=>{l.value=e,this.data.subtitlesOpacity=e,v.d.set(`subtitlesOpacity`,this.data.subtitlesOpacity),g.A.log(`subtitlesOpacity value changed. New value:`,e),this.onInputSubtitlesBackgroundOpacity.dispatch(e)})}),this.translateHotkeyButton.addEventListener(`change`,async e=>{this.data.translationHotkey=e,await v.d.set(`translationHotkey`,this.data.translationHotkey),g.A.log(`translationHotkey value changed. New value:`,e)}),this.proxyM3U8HostTextfield.addEventListener(`change`,async e=>{this.data.m3u8ProxyHost=e||d.se,await v.d.set(`m3u8ProxyHost`,this.data.m3u8ProxyHost),g.A.log(`m3u8ProxyHost value changed. New value:`,this.data.m3u8ProxyHost)}),this.proxyWorkerHostTextfield.addEventListener(`change`,async e=>{this.data.proxyWorkerHost=e||d.Pm,await v.d.set(`proxyWorkerHost`,this.data.proxyWorkerHost),g.A.log(`proxyWorkerHost value changed. New value:`,this.data.proxyWorkerHost),this.onChangeProxyWorkerHost.dispatch(e)}),this.proxyTranslationStatusSelect.addEventListener(`selectItem`,async e=>{this.data.translateProxyEnabled=Number.parseInt(e),await v.d.set(`translateProxyEnabled`,this.data.translateProxyEnabled),await v.d.set(`translateProxyEnabledDefault`,!1),g.A.log(`translateProxyEnabled value changed. New value:`,this.data.translateProxyEnabled),this.onSelectItemProxyTranslationStatus.dispatch(e)}),this.translateAPIErrorsCheckbox.addEventListener(`change`,async e=>{this.data.translateAPIErrors=e,await v.d.set(`translateAPIErrors`,this.data.translateAPIErrors),g.A.log(`translateAPIErrors value changed. New value:`,e)}),this.useNewAudioPlayerCheckbox.addEventListener(`change`,async e=>{this.data.newAudioPlayer=e,await v.d.set(`newAudioPlayer`,this.data.newAudioPlayer),g.A.log(`newAudioPlayer value changed. New value:`,e),this.onlyBypassMediaCSPCheckbox.disabled=this.onlyBypassMediaCSPCheckbox.hidden=!e,this.onChangeUseNewAudioPlayer.dispatch(e)}),this.onlyBypassMediaCSPCheckbox.addEventListener(`change`,async e=>{this.data.onlyBypassMediaCSP=e,await v.d.set(`onlyBypassMediaCSP`,this.data.onlyBypassMediaCSP),g.A.log(`onlyBypassMediaCSP value changed. New value:`,e),this.onChangeOnlyBypassMediaCSP.dispatch(e)}),this.translationTextServiceSelect.addEventListener(`selectItem`,async e=>{this.data.translationService=e,await v.d.set(`translationService`,this.data.translationService),g.A.log(`translationService value changed. New value:`,e),this.onSelectItemTranslationTextService.dispatch(e)}),this.detectServiceSelect.addEventListener(`selectItem`,async e=>{this.data.detectService=e,await v.d.set(`detectService`,this.data.detectService),g.A.log(`detectService value changed. New value:`,e)}),this.appearanceDetails.addEventListener(`click`,()=>{let e=new w.A({titleHtml:p.j.get(`appearance`),isTemp:!0});this.globalPortal.appendChild(e.container);let t=new S.A({labelHtml:p.j.get(`VOTShowPiPButton`),checked:this.data.showPiPButton});t.hidden=!(0,b.Bs)();let n=(this.data.autoHideButtonDelay??d.qU)/1e3,r=new k.A({labelText:p.j.get(`autoHideButtonDelay`),labelEOL:`:`,symbol:` ${p.j.get(`secs`)}`,value:n}),i=new O.A({labelHtml:r.container,value:n,min:.1,max:3,step:.1}),a=new E.A({labelText:p.j.get(`buttonPositionInWidePlayer`),icon:M.w2}),o=new D.A({selectTitle:p.j.get(`buttonPositionInWidePlayer`),dialogTitle:p.j.get(`buttonPositionInWidePlayer`),labelElement:a.container,dialogParent:this.globalPortal,items:m.X.map(e=>({label:p.j.get(`position.${e}`),value:e,selected:e===this.data.buttonPos}))}),s=new j.A({target:a.icon,content:p.j.get(`minButtonPositionContainer`),position:`bottom`,backgroundColor:`var(--vot-helper-ondialog)`,parentElement:this.globalPortal}),c=new E.A({labelText:p.j.get(`VOTMenuLanguage`)}),l=new D.A({selectTitle:p.j.get(`langs.${p.j.langOverride}`),dialogTitle:p.j.get(`VOTMenuLanguage`),labelElement:c.container,dialogParent:this.globalPortal,items:D.A.genLanguageItems(p.j.getAvailableLangs(),p.j.langOverride)});e.bodyContainer.append(t.container,i.container,o.container,l.container),e.addEventListener(`close`,()=>{s.release()}),t.addEventListener(`change`,async e=>{this.data.showPiPButton=e,await v.d.set(`showPiPButton`,this.data.showPiPButton),g.A.log(`showPiPButton value changed. New value:`,e),this.onChangeShowPiPButton.dispatch(e)}),i.addEventListener(`input`,async e=>{r.value=e;let t=Math.round(e*1e3);g.A.log(`autoHideButtonDelay value changed. New value:`,t),this.data.autoHideButtonDelay=t,await v.d.set(`autoHideButtonDelay`,this.data.autoHideButtonDelay),this.onInputAutoHideButtonDelay.dispatch(e)}),o.addEventListener(`selectItem`,async e=>{g.A.log(`buttonPos value changed. New value:`,e),this.data.buttonPos=e,await v.d.set(`buttonPos`,this.data.buttonPos),this.onSelectItemButtonPosition.dispatch(e)}),l.addEventListener(`selectItem`,async e=>{let t=await p.j.changeLang(e);t&&(this.data.localeUpdatedAt=await v.d.get(`localeUpdatedAt`,0),this.onSelectItemMenuLanguage.dispatch(e))})}),this.aboutExtensionDetails.addEventListener(`click`,()=>{let e=new w.A({titleHtml:p.j.get(`aboutExtension`),isTemp:!0});this.globalPortal.appendChild(e.container);let t=h.A.createInformation(`${p.j.get(`VOTVersion`)}:`,GM_info.script.version||p.j.get(`notFound`)),n=h.A.createInformation(`${p.j.get(`VOTAuthors`)}:`,GM_info.script.author??p.j.get(`notFound`)),r=h.A.createInformation(`${p.j.get(`VOTLoader`)}:`,`${GM_info.scriptHandler} v${GM_info.version}`),i=h.A.createInformation(`${p.j.get(`VOTBrowser`)}:`,`${b.R5.browser.name} ${b.R5.browser.version} (${b.R5.os.name} ${b.R5.os.version})`),a=new Date((this.data.localeUpdatedAt??0)*1e3).toLocaleString(),o=(0,s.qy)`${this.data.localeHash}
(${p.j.get(`VOTUpdatedAt`)} ${a})`,c=h.A.createInformation(`${p.j.get(`VOTLocaleHash`)}:`,o),l=h.A.createOutlinedButton(p.j.get(`VOTUpdateLocaleFiles`));e.bodyContainer.append(t.container,n.container,r.container,i.container,c.container,l),l.addEventListener(`click`,async()=>{await v.d.set(`localeHash`,``),await p.j.update(!0),window.location.reload()})}),this.bugReportButton.addEventListener(`click`,()=>{this.onClickBugReport.dispatch()}),this.resetSettingsButton.addEventListener(`click`,()=>{this.onClickResetSettings.dispatch()}),this}initDebugUI(){return this}addEventListener(e,t){switch(e){case`click:bugReport`:this.onClickBugReport.addListener(t);break;case`click:resetSettings`:this.onClickResetSettings.addListener(t);break;case`update:account`:this.onUpdateAccount.addListener(t);break;case`change:autoTranslate`:this.onChangeAutoTranslate.addListener(t);break;case`change:showVideoVolume`:this.onChangeShowVideoVolume.addListener(t);break;case`change:audioBuster`:this.onChangeAudioBooster.addListener(t);break;case`change:useLivelyVoice`:this.onChangeUseLivelyVoice.addListener(t);break;case`change:subtitlesHighlightWords`:this.onChangeSubtitlesHighlightWords.addListener(t);break;case`change:proxyWorkerHost`:this.onChangeProxyWorkerHost.addListener(t);break;case`change:useNewAudioPlayer`:this.onChangeUseNewAudioPlayer.addListener(t);break;case`change:onlyBypassMediaCSP`:this.onChangeOnlyBypassMediaCSP.addListener(t);break;case`change:showPiPButton`:this.onChangeShowPiPButton.addListener(t);break;case`input:subtitlesMaxLength`:this.onInputSubtitlesMaxLength.addListener(t);break;case`input:subtitlesFontSize`:this.onInputSubtitlesFontSize.addListener(t);break;case`input:subtitlesBackgroundOpacity`:this.onInputSubtitlesBackgroundOpacity.addListener(t);break;case`input:autoHideButtonDelay`:this.onInputAutoHideButtonDelay.addListener(t);break;case`select:proxyTranslationStatus`:this.onSelectItemProxyTranslationStatus.addListener(t);break;case`select:translationTextService`:this.onSelectItemTranslationTextService.addListener(t);break;case`select:buttonPosition`:this.onSelectItemButtonPosition.addListener(t);break;case`select:menuLanguage`:this.onSelectItemMenuLanguage.addListener(t);break}return this}removeEventListener(e,t){switch(e){case`click:bugReport`:this.onClickBugReport.removeListener(t);break;case`click:resetSettings`:this.onClickResetSettings.removeListener(t);break;case`update:account`:this.onUpdateAccount.removeListener(t);break;case`change:autoTranslate`:this.onChangeAutoTranslate.removeListener(t);break;case`change:showVideoVolume`:this.onChangeShowVideoVolume.removeListener(t);break;case`change:audioBuster`:this.onChangeAudioBooster.removeListener(t);break;case`change:useLivelyVoice`:this.onChangeUseLivelyVoice.removeListener(t);break;case`change:subtitlesHighlightWords`:this.onChangeSubtitlesHighlightWords.removeListener(t);break;case`change:proxyWorkerHost`:this.onChangeProxyWorkerHost.removeListener(t);break;case`change:useNewAudioPlayer`:this.onChangeUseNewAudioPlayer.removeListener(t);break;case`change:onlyBypassMediaCSP`:this.onChangeOnlyBypassMediaCSP.removeListener(t);break;case`change:showPiPButton`:this.onChangeShowPiPButton.removeListener(t);break;case`input:subtitlesMaxLength`:this.onInputSubtitlesMaxLength.removeListener(t);break;case`input:subtitlesFontSize`:this.onInputSubtitlesFontSize.removeListener(t);break;case`input:subtitlesBackgroundOpacity`:this.onInputSubtitlesBackgroundOpacity.removeListener(t);break;case`input:autoHideButtonDelay`:this.onInputAutoHideButtonDelay.removeListener(t);break;case`select:proxyTranslationStatus`:this.onSelectItemProxyTranslationStatus.removeListener(t);break;case`select:translationTextService`:this.onSelectItemTranslationTextService.removeListener(t);break;case`select:buttonPosition`:this.onSelectItemButtonPosition.removeListener(t);break;case`select:menuLanguage`:this.onSelectItemMenuLanguage.removeListener(t);break}return this}releaseUI(e=!1){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);return this.dialog.remove(),this.accountButtonRefreshTooltip?.release(),this.accountButtonTokenTooltip?.release(),this.audioBoosterTooltip?.release(),this.useAudioDownloadCheckboxTooltip?.release(),this.useNewAudioPlayerTooltip?.release(),this.onlyBypassMediaCSPTooltip?.release(),this.translationTextServiceTooltip?.release(),this.proxyTranslationStatusSelectTooltip?.release(),this.initialized=e,this}releaseUIEvents(e=!1){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);return this.onClickBugReport.clear(),this.onClickResetSettings.clear(),this.onUpdateAccount.clear(),this.onChangeAutoTranslate.clear(),this.onChangeShowVideoVolume.clear(),this.onChangeAudioBooster.clear(),this.onChangeUseLivelyVoice.clear(),this.onChangeSubtitlesHighlightWords.clear(),this.onChangeProxyWorkerHost.clear(),this.onChangeUseNewAudioPlayer.clear(),this.onChangeOnlyBypassMediaCSP.clear(),this.onChangeShowPiPButton.clear(),this.onInputSubtitlesMaxLength.clear(),this.onInputSubtitlesFontSize.clear(),this.onInputSubtitlesBackgroundOpacity.clear(),this.onInputAutoHideButtonDelay.clear(),this.onSelectItemProxyTranslationStatus.clear(),this.onSelectItemTranslationTextService.clear(),this.onSelectItemButtonPosition.clear(),this.onSelectItemMenuLanguage.clear(),this.initialized=e,this}release(){return this.releaseUI(!0),this.releaseUIEvents(!1),this}updateAccountInfo(){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);let e=!!this.data.account?.token;return this.accountButton.avatarId=this.data.account?.avatarId,this.useLivelyVoiceTooltip.hidden=this.accountButton.loggedIn=e,this.accountButton.username=this.data.account?.username,this.useLivelyVoiceCheckbox.disabled=!e,this.onUpdateAccount.dispatch(this.data.account),this}open(){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);return this.dialog.open()}close(){if(!this.isInitialized())throw Error(`[VOT] SettingsView isn't initialized`);return this.dialog.close()}}r()}catch(e){r(e)}})},"./src/utils/VOTLocalizedError.js":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{n:()=>o});var i=n(`./src/localization/localizationProvider.ts`),a=e([i]);i=(a.then?(await a)():a)[0];class o extends Error{constructor(e){super(i.j.getDefault(e)),this.name=`VOTLocalizedError`,this.unlocalizedMessage=e,this.localizedMessage=i.j.get(e)}}r()}catch(e){r(e)}})},"./src/utils/VideoObserver.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var r=n(`./node_modules/requestidlecallback-polyfill/index.js`),i=n(`./node_modules/@vot.js/shared/dist/data/alternativeUrls.js`),a=n(`./src/core/eventImpl.ts`),o=n(`./src/utils/debug.ts`);class s{static adKeywords=new Set([`advertise`,`advertisement`,`promo`,`sponsor`,`banner`,`commercial`,`preroll`,`midroll`,`postroll`,`ad-container`,`sponsored`]);constructor(){this.videoCache=new WeakSet,this.observedNodes={added:new Set,removed:new Set},this.onVideoAdded=new a.Z,this.onVideoRemoved=new a.Z,this.observer=new MutationObserver(this.handleMutations)}isAdRelated(e){let t=[`class`,`id`,`title`];for(let n of t){let t=e.getAttribute(n);if(t&&s.adKeywords.has(t.toLowerCase()))return!0}return!1}hasAudio(e){return i.sx.includes(window.location.hostname)?!e.muted:e.mozHasAudio===void 0?e.webkitAudioDecodedByteCount===void 0?`audioTracks`in e&&e.audioTracks.length>0||!e.muted:e.webkitAudioDecodedByteCount>0:e.mozHasAudio}isValidVideo(e){if(this.isAdRelated(e))return!1;let t=e.parentElement;for(;t&&!this.isAdRelated(t);)t=t.parentElement;return t?!1:this.hasAudio(e)?!0:(o.A.log(`Ignoring video without audio:`,e),!1)}traverseDOM(e){if(e instanceof HTMLVideoElement){this.checkVideoState(e);return}let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e.tagName===`VIDEO`||e.shadowRoot?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){let e=t.currentNode;e instanceof HTMLVideoElement&&this.checkVideoState(e),e.shadowRoot&&this.traverseDOM(e.shadowRoot)}}checkVideoState(e){if(this.videoCache.has(e))return;this.videoCache.add(e);let t=()=>{this.isValidVideo(e)&&this.onVideoAdded.dispatch(e),e.removeEventListener(`loadeddata`,t)},n=()=>{e.isConnected||(this.onVideoRemoved.dispatch(e),this.videoCache.delete(e),e.removeEventListener(`emptied`,n))};e.addEventListener(`emptied`,n),e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?t():e.addEventListener(`loadeddata`,t)}handleMutations=e=>{for(let t of e){if(t.type!==`childList`)continue;for(let e of t.addedNodes)this.observedNodes.added.add(e);for(let e of t.removedNodes)this.observedNodes.removed.add(e)}window.requestIdleCallback(()=>{for(let e of this.observedNodes.added)this.traverseDOM(e);for(let e of this.observedNodes.removed)if(e.querySelectorAll){let t=e.querySelectorAll(`video`);for(let e of t)e.isConnected||(this.onVideoRemoved.dispatch(e),this.videoCache.delete(e))}this.observedNodes.added.clear(),this.observedNodes.removed.clear()},{timeout:1e3})};enable(){this.observer.observe(document.documentElement,{childList:!0,subtree:!0}),this.traverseDOM(document.documentElement)}disable(){this.observer.disconnect(),this.videoCache=new WeakSet}}},"./src/utils/debug.ts":(e,t,n)=>{"use strict";n.d(t,{A:()=>r});let r={log:(...e)=>{}}},"./src/utils/gm.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{B0:()=>u,G3:()=>f,O6:()=>l,up:()=>c,yx:()=>d});var i=n(`./src/config/config.js`),a=n(`./src/utils/debug.ts`),o=n(`./src/utils/utils.ts`),s=e([o]);o=(s.then?(await s)():s)[0];let c=GM_info?.scriptHandler&&!i.Wl.includes(GM_info.scriptHandler),l=typeof GM<`u`,u=typeof unsafeWindow<`u`,d=typeof GM_xmlhttpRequest<`u`;async function f(e,t={}){let{timeout:n=15e3,...r}=t,i=new AbortController;try{if(typeof e==`string`&&e.includes(`api.browser.yandex.ru`))throw Error(`Preventing yandex cors`);return await fetch(e,{signal:i.signal,...r})}catch(t){a.A.log(`GM_fetch preventing CORS by GM_xmlhttpRequest`,t.message);let i=(0,o.dJ)(r.headers);return new Promise((t,a)=>{GM_xmlhttpRequest({method:r.method||`GET`,url:e.toString(),responseType:`blob`,data:r.body,timeout:n,headers:i,onload:e=>{let n=e.responseHeaders.split(/\r?\n/).reduce((e,t)=>{let[,n,r]=t.match(/^([\w-]+): (.+)$/)||[];return n&&(e[n]=r),e},{}),r=new Response(e.response,{status:e.status,headers:n});Object.defineProperty(r,`url`,{value:e.finalUrl??``}),t(r)},ontimeout:()=>a(Error(`Timeout`)),onerror:e=>a(Error(e)),onabort:()=>a(Error(`AbortError`))})})}}r()}catch(e){r(e)}})},"./src/utils/iframeConnector.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{IA:()=>d,Io:()=>f,Ok:()=>c,WF:()=>o,d4:()=>s,hG:()=>p,yB:()=>l});var i=n(`./src/utils/utils.ts`),a=e([i]);i=(a.then?(await a)():a)[0];let o=`vot_iframe`,s=()=>window.self!==window.top,c=()=>`main-world-bridge-${performance.now()}-${Math.random()}`,l=e=>document.getElementById(e);async function u(e,t,n){let r=document.createElement(`iframe`);r.style.position=`absolute`,r.style.zIndex=`-1`,r.style.display=`none`,r.id=t,r.src=`${e}#${o}`,document.body.appendChild(r);let a=new Promise(e=>{let t=({data:r})=>{r.messageType===`say-${n}-iframe-is-ready`&&(window.removeEventListener(`message`,t),e(!0))};window.addEventListener(`message`,t)});return await Promise.race([a,(0,i.wR)(15e3,`Service iframe did not have time to be ready`)]),r}async function d(e,t,n,r){if(t.includes(`#`))throw Error(`The src parameter should not contain a hash (#) character.`);let i=l(n);if(i){if(e!==null)return e;i?.remove()}return e=await u(t,n,r),e}function f(e,t){window.addEventListener(`message`,t),window.parent.postMessage({messageType:`say-${e}-iframe-is-ready`,messageDirection:`response`},`*`)}function p(e,t){let n=c();return new Promise((r,i)=>{let a=({data:t})=>{t?.messageId===n&&t.messageType===e&&t.messageDirection===`response`&&(window.removeEventListener(`message`,a),t.error?i(t.error):r(t.payload))};window.addEventListener(`message`,a),window.postMessage({messageId:n,messageType:e,messageDirection:`request`,...t!==void 0&&{payload:t}},`*`)})}r()}catch(e){r(e)}})},"./src/utils/localization.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{o:()=>c,v:()=>s});var i=n(`./src/localization/localizationProvider.ts`),a=e([i]);i=(a.then?(await a)():a)[0];let o=.66,s=navigator.language?.substring(0,2).toLowerCase()||`en`;function c(e){let t=Math.floor(e/60),n=Math.floor(e%60),r=n/60;if(r>=o&&(t+=1,n=0),t>=60)return i.j.get(`translationTakeMoreThanHour`);if(t<=1)return i.j.get(`translationTakeAboutMinute`);let a=String(t);return t!==11&&t%10==1?i.j.get(`translationTakeApproximatelyMinute2`).replace(`{0}`,a):![12,13,14].includes(t)&&[2,3,4].includes(t%10)?i.j.get(`translationTakeApproximatelyMinute`).replace(`{0}`,a):i.j.get(`translationTakeApproximatelyMinutes`).replace(`{0}`,a)}r()}catch(e){r(e)}})},"./src/utils/storage.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{_:()=>p,d:()=>m});var i=n(`./src/config/config.js`),a=n(`./src/localization/localizationProvider.ts`),o=n(`./src/types/storage.ts`),s=n(`./src/utils/debug.ts`),c=n(`./src/utils/gm.ts`),l=e([a,c]);[a,c]=l.then?(await l)():l;let u={numToBool:[[`autoTranslate`],[`dontTranslateYourLang`,`enabledDontTranslateLanguages`],[`autoSetVolumeYandexStyle`,`enabledAutoVolume`],[`showVideoSlider`],[`syncVolume`],[`downloadWithName`],[`sendNotifyOnComplete`],[`highlightWords`],[`onlyBypassMediaCSP`],[`newAudioPlayer`],[`showPiPButton`],[`translateAPIErrors`],[`audioBooster`],[`useNewModel`,`useLivelyVoice`]],number:[[`autoVolume`]],array:[[`dontTranslateLanguage`,`dontTranslateLanguages`]],string:[[`hotkeyButton`,`translationHotkey`],[`locale-lang-override`,`localeLangOverride`],[`locale-lang`,`localeLang`]]};function d(e,t,n){if(typeof t==`number`)return n?.number.some(t=>t[0]===e)?`number`:`numToBool`;if(Array.isArray(t))return`array`;if(typeof t==`string`||t===null)return`string`}function f(e,t){return[`string`,`array`,`number`].includes(e)?t:!!t}async function p(e){if(e.compatVersion===i.r4)return e;let t=Object.values(u).flat().reduce((e,t)=>(t[1]&&(e[t[0]]=void 0),e),{}),n=await m.getValues(t),r=Object.fromEntries(Object.entries(n).filter(([e,t])=>t!==void 0)),o={...e,...r},s=Object.keys(o).reduce((e,t)=>(e[t]=void 0,e),{}),c=await m.getValues(s),l=e;for(let[e,t]of Object.entries(o)){let n=d(e,t,u);if(!n)continue;let i=u[n].find(t=>t[0]===e);if(!i)continue;let o=i[1]??e;if(c[e]===void 0)continue;let s=f(n,t);e===`autoVolume`&&t<1&&(s=Math.round(t*100)),l[o]=s,r[e]!==void 0&&await m.delete(e),o===`localeLangOverride`&&await a.j.changeLang(t),await m.set(o,s)}return{...l,compatVersion:`2025-05-09`}}let m=new class{supportGM;supportGMPromises;supportGMGetValues;constructor(){this.supportGM=typeof GM_getValue==`function`,this.supportGMPromises=c.O6&&typeof GM?.getValue==`function`,this.supportGMGetValues=c.O6&&typeof GM?.getValues==`function`,s.A.log(`[VOT Storage] GM Promises: ${this.supportGMPromises} | GM: ${this.supportGM}`)}get isSupportOnlyLS(){return!this.supportGM&&!this.supportGMPromises}syncGet(e,t){if(this.supportGM)return GM_getValue(e,t);let n=(window.localStorage.getItem(e));if(!n)return t;try{return JSON.parse(n)}catch{return t}}async get(e,t){return this.supportGMPromises?await GM.getValue(e,t):Promise.resolve(this.syncGet(e,t))}async getValues(e){return this.supportGMGetValues?await GM.getValues(e):Object.fromEntries(await Promise.all(Object.entries(e).map(async([e,t])=>{let n=await this.get(e,t);return[e,n]})))}syncSet(e,t){return this.supportGM?GM_setValue(e,t):window.localStorage.setItem(e,JSON.stringify(t))}async set(e,t){return this.supportGMPromises?await GM.setValue(e,t):Promise.resolve(this.syncSet(e,t))}syncDelete(e){return this.supportGM?GM_deleteValue(e):window.localStorage.removeItem(e)}async delete(e){return this.supportGMPromises?await GM.deleteValue(e):Promise.resolve(this.syncDelete(e))}syncList(){return this.supportGM?GM_listValues():o.w}async list(){return this.supportGMPromises?await GM.listValues():Promise.resolve(this.syncList())}};r()}catch(e){r(e)}})},"./src/utils/translateApis.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{Tl:()=>u,o0:()=>d,qh:()=>p,vN:()=>f});var i=n(`./src/config/config.js`),a=n(`./src/utils/gm.ts`),o=n(`./src/utils/storage.ts`),s=e([a,o]);[a,o]=s.then?(await s)():s;let c=new class{isFOSWLYError(e){return Object.hasOwn(e,`error`)}async request(e,t={}){try{let n=await((0,a.G3)(`${i.k$}${e}`,{timeout:3e3,...t})),r=await(n.json());if(this.isFOSWLYError(r))throw r.error;return r}catch(e){console.error(`[VOT] Failed to get data from FOSWLY Translate API, because ${e.message}`);return}}async translateMultiple(e,t,n){let r=await(this.request(`/translate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,lang:t,service:n})}));return r?r.translations:e}async translate(e,t,n){let r=await(this.request(`/translate?${new URLSearchParams({text:e,lang:t,service:n})}`));return r?r.translations[0]:e}async detect(e,t){let n=await(this.request(`/detect?${new URLSearchParams({text:e,service:t})}`));return n?n.lang:`en`}},l={async detect(e){try{let t=await(0,a.G3)(i.sl,{method:`POST`,body:e,timeout:3e3});return await t.text()}catch(e){return console.error(`[VOT] Error getting lang from text, because ${e.message}`),`en`}}};async function u(e,t=``,n=`ru`){let r=await o.d.get(`translationService`,i.mE);switch(r){case`yandexbrowser`:case`msedge`:{let i=t&&n?`${t}-${n}`:n;return Array.isArray(e)?await c.translateMultiple(e,i,r):await c.translate(e,i,r)}default:return e}}async function d(e){let t=await o.d.get(`detectService`,i.K2);switch(t){case`yandexbrowser`:case`msedge`:return await c.detect(e,t);case`rust-server`:return await l.detect(e);default:return`en`}}let f=[`yandexbrowser`,`msedge`],p=[...f,`rust-server`];r()}catch(e){r(e)}})},"./src/utils/utils.ts":(e,t,n)=>{"use strict";n.a(e,async(e,r)=>{try{n.d(t,{Bs:()=>m,CK:()=>h,Eh:()=>C,GW:()=>S,HD:()=>f,Le:()=>v,MR:()=>O,R5:()=>p,UV:()=>E,WN:()=>_,Wo:()=>k,X5:()=>g,dJ:()=>b,lg:()=>y,qE:()=>x,wR:()=>T});var i=n(`./node_modules/bowser/es5.js`),a=n.n(i),o=n(`./node_modules/browser-id3-writer/dist/browser-id3-writer.mjs`),s=n(`./node_modules/@vot.js/shared/dist/data/consts.js`),c=n(`./src/utils/localization.ts`),l=e([c]);c=(l.then?(await l)():l)[0];let u=/(?:https?|www|\bhttp\s+)[^\s/]*?(?:\.\s*[a-z]{2,}|\/)\S*|#[^\s#]+|auto-generated\s+by\s+youtube|provided\s+to\s+youtube\s+by|released\s+on|paypal?|0x[\da-f]{40}|[13][1-9a-z]{25,34}|4[\dab][1-9a-z]{93}|t[1-9a-z]{33}/gi,d=new Set([`uk`,`be`,`bg`,`mk`,`sr`,`bs`,`hr`,`sl`,`pl`,`sk`,`cs`]),f=(()=>s.Xh.includes(c.v)?c.v:d.has(c.v)?`ru`:`en`)(),p=a().getParser(window.navigator.userAgent).getResult(),m=()=>`pictureInPictureEnabled`in document&&document.pictureInPictureEnabled;function h(){return typeof Hls<`u`&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}function g(e,t){return(e+` `+(t||``)).replace(u,``).replace(/[^\p{L}]+/gu,` `).substring(0,450).trim()}function _(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}function v(e){return e.trim().length===0?new Date().toLocaleDateString(`en-us`).replaceAll(`/`,`-`):e.replace(/^https?:\/\//,``).replace(/[\\/:*?"'<>|]/g,`-`)}function y(){return Math.floor(Date.now()/1e3)}function b(e){return e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):e||{}}function x(e,t=0,n=100){return Math.min(Math.max(e,t),n)}function S(e){return Object.entries(e).reduce((t,[n,r])=>{if(r===void 0)return t;if(typeof r!=`object`)return t[n]=r,t;let i=Object.entries(S(e[n])).reduce((e,[t,r])=>(e[`${n}.${t}`]=r,e),{});return{...t,...i}},{})}async function C(){let e=document;(e.fullscreenElement||e.webkitFullscreenElement)&&(e.webkitExitFullscreen&&await e.webkitExitFullscreen(),e.exitFullscreen&&await e.exitFullscreen())}let w=e=>new Promise(t=>setTimeout(t,e));function T(e,t=`Operation timed out`){return new Promise((n,r)=>{setTimeout(()=>r(Error(t)),e)})}async function E(e,t,n=!1){let r=!1;return Promise.race([(async()=>{for(;!e()&&!r;)await w(100)})(),new Promise((e,i)=>{setTimeout(()=>{r=!0,n?i(Error(`Wait for condition reached timeout of ${t}`)):e()},t)})])}async function D(e,t,n=e=>{}){let r=e.body?.getReader();if(!r)throw Error(`Response body is not readable`);let i=new Uint8Array(t),a=0;for(;;){let{done:e,value:o}=await r.read();if(e)break;i.set(o,a),a+=o.length,n(Math.round(a/t*100))}return i.buffer}async function O(e,t,n=e=>{}){let r=+(e.headers.get(`Content-Length`)??0),i=await(r?D(e,r,n):e.arrayBuffer());n(100);let a=new o.Q(i);return a.setFrame(`TIT2`,t),a.addTag(),_(a.getBlob(),`${t}.mp3`),!0}function k(e){window.open(e,`_blank`)?.focus()}r()}catch(e){r(e)}})},"./src/utils/volume.ts":(e,t,n)=>{"use strict";n.d(t,{q:()=>r});function r(e,t,n,r){let i=t;return t>r?(i=n+(t-r),i=i>100?100:Math.max(i,0),e.volume=i/100):t100?100:Math.max(i,0),e.volume=i/100),i}}},t={};function n(r){var i=t[r];if(i!==void 0)return i.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}(()=>{var e=typeof Symbol==`function`?Symbol(`webpack queues`):`__webpack_queues__`,t=typeof Symbol==`function`?Symbol(`webpack exports`):`__webpack_exports__`,r=typeof Symbol==`function`?Symbol(`webpack error`):`__webpack_error__`,i=e=>{e&&e.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))},a=n=>n.map(n=>{if(typeof n==`object`&&n){if(n[e])return n;if(n.then){var a=[];a.d=0,n.then(e=>{o[t]=e,i(a)},e=>{o[r]=e,i(a)});var o={};return o[e]=e=>e(a),o}}var s={};return s[e]=e=>{},s[t]=n,s});n.a=(n,o,s)=>{var c;s&&((c=[]).d=-1);var l=new Set,exports=n.exports,d,f,p,m=new Promise((e,t)=>{p=t,f=e});m[t]=exports,m[e]=e=>(c&&e(c),l.forEach(e),m.catch(e=>{})),n.exports=m,o(n=>{d=a(n);var i,o=()=>d.map(e=>{if(e[r])throw e[r];return e[t]}),s=new Promise(t=>{i=()=>t(o),i.r=0;var n=e=>e!==c&&!l.has(e)&&(l.add(e),e&&!e.d&&(i.r++,e.push(i)));d.map(t=>t[e](n))});return i.r?s:o()},e=>(e?p(m[r]=e):f(exports),i(c))),c&&c.d<0&&(c.d=0)}})(),n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(exports,t)=>{for(var r in t)n.o(t,r)&&!n.o(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r=n(`./src/index.js`)})();