From 0adc51ccfb131e0d61c022107c71003353237476 Mon Sep 17 00:00:00 2001 From: Blueberryy <36592509+Blueberryy@users.noreply.github.com> Date: Tue, 26 Dec 2023 18:02:28 +0500 Subject: [PATCH 01/10] Update ru.json --- src/localization/locales/ru.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/localization/locales/ru.json b/src/localization/locales/ru.json index d20ef3e3..018f08cd 100644 --- a/src/localization/locales/ru.json +++ b/src/localization/locales/ru.json @@ -2,7 +2,7 @@ "__version__": 2, "recommended": "рекомендуется", "translateVideo": "Перевести видео", - "disableTranslate": "Выключить", + "disableTranslate": "Отключить", "translationSettings": "Настройки перевода", "subtitlesSettings": "Настройки субтитров", "about": "О расширении", @@ -14,8 +14,8 @@ "translationTakeMoreThanHour": "Перевод займёт больше часа", "translationTakeAboutMinute": "Перевод займёт около минуты", "translationTakeFewMinutes": "Перевод займёт несколько минут", - "translationTakeApproximatelyMinutes": "Перевод займёт примерно {0} минут", - "translationTakeApproximatelyMinute": "Перевод займёт примерно {0} минуты", + "translationTakeApproximatelyMinutes": "Перевод займёт примерно {0} мин.", + "translationTakeApproximatelyMinute": "Перевод займёт примерно {0} мин.", "unSupportedExtensionError": "Ошибка! {0} не поддерживается этой версией расширения!\n\nПожалуйста, используйте cloudflare-версию расширения VOT.", "requestTranslationFailed": "Не удалось запросить перевод видео", "audioNotReceived": "Не получена ссылка на аудио", @@ -27,17 +27,17 @@ "VOTVolume": "Громкость видео", "VOTVolumeTranslation": "Громкость перевода", "VOTAutoSetVolume": "Уменьшать громкость видео до ", - "VOTShowVideoSlider": "Слайдер громкости видео", + "VOTShowVideoSlider": "Ползунок громкости видео", "VOTSyncVolume": "Связать громкость перевода и видео", "VOTAudioProxy": "Проксировать полученное аудио", "VOTDisableFromYourLang": "Вы отключили перевод видео на вашем языке", "VOTLiveNotSupported": "Не поддерживается перевод трансляций в прямом эфире", "VOTPremiere": "Дождитесь окончания премьеры перед переводом", "VOTVideoIsTooLong": "Видео слишком длинное", - "VOTNoVideoIDFound": "Не найдено ID видео", + "VOTNoVideoIDFound": "Не найден идидентификатор (ID) видео", "VOTFailedInitDB": "Не удалось инициализовать базу данных", "VOTDBNeedUpdate": "Базе данных нужно обновление, пожалуйста, перезагрузите страницу", - "VOTDisabledForDBUpdating": "VOT отключен из-за ошибки при обновление Базы Данных. Закройте все открытые вкладки с {0} и попробуйте снова", + "VOTDisabledForDBUpdating": "VOT отключён из-за ошибки при обновлении базы данных. Закройте все открытые вкладки с {0} и попробуйте снова", "VOTFailedWriteToDB": "Не удалось записать данные в базу данных", "VOTFailedReadFromDB": "Не удалось получить данные из базы данных", "VOTSubtitles": "Субтитры", @@ -52,7 +52,7 @@ "VOTVersion": "Версия", "VOTLoader": "Загрузчик", "VOTBrowser": "Браузер", - "VOTShowPiPButton": "Показать кнопку PiP", + "VOTShowPiPButton": "Показать кнопку «Картинка в картинке»", "langs": { "auto": "Авто", "az": "Азербайджанский", @@ -103,8 +103,8 @@ "rw": "Киньяруанда", "ky": "Киргизский", "zh": "Китайский", - "zh-Hant": "Китайский (Традиционный)", - "zh-Hans": "Китайский (Упрощенный)", + "zh-Hant": "Китайский (традиционный)", + "zh-Hans": "Китайский (упрощённый)", "ko": "Корейский", "co": "Корсиканский", "xh": "Коса", @@ -182,7 +182,7 @@ "ja": "Японский", "kri": "Кри" }, - "udemyAccessTokenExpired": "Срок действия введенного вами токена доступа к Udemy истек", + "udemyAccessTokenExpired": "Срок действия введённого вами токена доступа к Udemy истёк", "udemyModuleArgsNotFound": "Не удалось получить данные модуля udemy из-за того, что ModuleArgs не найден", "VOTTranslationHelpNull": "Не удалось получить данные, необходимые для перевода", "enterUdemyAccessToken": "Введите токен доступа Udemy", From 6b6f16026c526fb4462932b36b12574377be206f Mon Sep 17 00:00:00 2001 From: Blueberryy <36592509+Blueberryy@users.noreply.github.com> Date: Tue, 26 Dec 2023 18:03:50 +0500 Subject: [PATCH 02/10] Update ru.json --- src/localization/locales/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/localization/locales/ru.json b/src/localization/locales/ru.json index 018f08cd..909eecb6 100644 --- a/src/localization/locales/ru.json +++ b/src/localization/locales/ru.json @@ -34,7 +34,7 @@ "VOTLiveNotSupported": "Не поддерживается перевод трансляций в прямом эфире", "VOTPremiere": "Дождитесь окончания премьеры перед переводом", "VOTVideoIsTooLong": "Видео слишком длинное", - "VOTNoVideoIDFound": "Не найден идидентификатор (ID) видео", + "VOTNoVideoIDFound": "Не найден идентификатор (ID) видео", "VOTFailedInitDB": "Не удалось инициализовать базу данных", "VOTDBNeedUpdate": "Базе данных нужно обновление, пожалуйста, перезагрузите страницу", "VOTDisabledForDBUpdating": "VOT отключён из-за ошибки при обновлении базы данных. Закройте все открытые вкладки с {0} и попробуйте снова", From 469096f99a8db4c0d1caab5e01e14b2d5505ecf8 Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Wed, 27 Dec 2023 01:26:30 +0400 Subject: [PATCH 03/10] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=87=D0=B8=D1=81=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0?= =?UTF-8?q?=20Youtube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теперь во время очистки текста удаляются определенные слова и фразы, указанные в массиве filters, что особенно полезно для удаления автоматически сгенерированного текста или рекламы. --- src/utils/youtubeUtils.js | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/utils/youtubeUtils.js b/src/utils/youtubeUtils.js index 71684563..8f7fb1cb 100644 --- a/src/utils/youtubeUtils.js +++ b/src/utils/youtubeUtils.js @@ -34,17 +34,29 @@ async function getLanguage(player, response, title, description) { } // If there is no caption track, use detect to get the language code from the description - const cleanedDescription = description - .split("\n") - .filter((line) => !line.match(/https?:\/\/\S+/)) - .join("\n") - .replace(/#\S+/g, "") - .replace(/[^\p{L}\s]/gu, "") - .replace(/\s+/g, " ") - .trim() - .slice(0, 250); - - const cleanText = [cleanedDescription, title].join(""); + const filters = [ + /https?:\/\/\S+/g, // для удаления ссылок + /#\S+/g, // для удаления хэштегов + /\d+/g, // для удаления чисел + // пример удаления слов и строк + /Auto-generated by YouTube/g, + /Provided to YouTube by/g, + /Released on/g, + ]; + + let cleanedDescription = description; + + filters.forEach((filter) => { + cleanedDescription = cleanedDescription.replace(filter, " "); + }); + + cleanedDescription = cleanedDescription.replace(/[^\p{L}\s]/gu, " "); + + cleanedDescription = cleanedDescription.trim().replace(/\s+/g, " "); + + cleanedDescription = cleanedDescription.slice(0, 250); + + const cleanText = [cleanedDescription, title].join(" "); return await detect(cleanText); } From 7f9e51df82ee8e069eab0d4138b622cd73a1bf52 Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Wed, 27 Dec 2023 02:58:25 +0400 Subject: [PATCH 04/10] Update youtubeUtils.js --- src/utils/youtubeUtils.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/utils/youtubeUtils.js b/src/utils/youtubeUtils.js index 8f7fb1cb..35ab41ab 100644 --- a/src/utils/youtubeUtils.js +++ b/src/utils/youtubeUtils.js @@ -33,22 +33,21 @@ async function getLanguage(player, response, title, description) { return "en"; } - // If there is no caption track, use detect to get the language code from the description - const filters = [ - /https?:\/\/\S+/g, // для удаления ссылок - /#\S+/g, // для удаления хэштегов - /\d+/g, // для удаления чисел - // пример удаления слов и строк + // If there is no caption track, use detect to get the language code from the description\ + + const deletefilter = [ + // Filters for deleting a string + /https?:\/\/\S+/g, // remove links + // deletion words /Auto-generated by YouTube/g, /Provided to YouTube by/g, /Released on/g, ]; - let cleanedDescription = description; - - filters.forEach((filter) => { - cleanedDescription = cleanedDescription.replace(filter, " "); - }); + let cleanedDescription = description + .split("\n") + .filter((line) => !deletefilter.some((regex) => regex.test(line))) + .join("\n"); cleanedDescription = cleanedDescription.replace(/[^\p{L}\s]/gu, " "); From 98c85faef5fbd22f1571dfe4eb09f713e9b10938 Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Wed, 27 Dec 2023 04:43:35 +0400 Subject: [PATCH 05/10] Update youtubeUtils.js --- src/utils/youtubeUtils.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/utils/youtubeUtils.js b/src/utils/youtubeUtils.js index 35ab41ab..49c6c074 100644 --- a/src/utils/youtubeUtils.js +++ b/src/utils/youtubeUtils.js @@ -36,24 +36,20 @@ async function getLanguage(player, response, title, description) { // If there is no caption track, use detect to get the language code from the description\ const deletefilter = [ - // Filters for deleting a string /https?:\/\/\S+/g, // remove links - // deletion words /Auto-generated by YouTube/g, /Provided to YouTube by/g, /Released on/g, ]; - let cleanedDescription = description + const cleanedDescription = description .split("\n") .filter((line) => !deletefilter.some((regex) => regex.test(line))) - .join("\n"); - - cleanedDescription = cleanedDescription.replace(/[^\p{L}\s]/gu, " "); - - cleanedDescription = cleanedDescription.trim().replace(/\s+/g, " "); - - cleanedDescription = cleanedDescription.slice(0, 250); + .join("\n") + .replace(/[^\p{L}\s]/gu, " ") + .trim() + .replace(/\s+/g, " ") + .slice(0, 250); const cleanText = [cleanedDescription, title].join(" "); From 6a0ac0b6b0057e1389109661b779be8c001cdfc6 Mon Sep 17 00:00:00 2001 From: Toil Date: Wed, 27 Dec 2023 11:01:11 +0300 Subject: [PATCH 06/10] #467 --- src/utils/youtubeUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/youtubeUtils.js b/src/utils/youtubeUtils.js index 49c6c074..9281c835 100644 --- a/src/utils/youtubeUtils.js +++ b/src/utils/youtubeUtils.js @@ -33,7 +33,7 @@ async function getLanguage(player, response, title, description) { return "en"; } - // If there is no caption track, use detect to get the language code from the description\ + // If there is no caption track, use detect to get the language code from the description const deletefilter = [ /https?:\/\/\S+/g, // remove links From 6465384d70269060b77e88ea37f62f3667ae8a77 Mon Sep 17 00:00:00 2001 From: Toil Date: Wed, 27 Dec 2023 11:13:53 +0300 Subject: [PATCH 07/10] version bumped --- src/localization/locales/ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/localization/locales/ru.json b/src/localization/locales/ru.json index 909eecb6..c9c34c64 100644 --- a/src/localization/locales/ru.json +++ b/src/localization/locales/ru.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "рекомендуется", "translateVideo": "Перевести видео", "disableTranslate": "Отключить", @@ -14,8 +14,8 @@ "translationTakeMoreThanHour": "Перевод займёт больше часа", "translationTakeAboutMinute": "Перевод займёт около минуты", "translationTakeFewMinutes": "Перевод займёт несколько минут", - "translationTakeApproximatelyMinutes": "Перевод займёт примерно {0} мин.", - "translationTakeApproximatelyMinute": "Перевод займёт примерно {0} мин.", + "translationTakeApproximatelyMinutes": "Перевод займёт примерно {0} минут", + "translationTakeApproximatelyMinute": "Перевод займёт примерно {0} минуты", "unSupportedExtensionError": "Ошибка! {0} не поддерживается этой версией расширения!\n\nПожалуйста, используйте cloudflare-версию расширения VOT.", "requestTranslationFailed": "Не удалось запросить перевод видео", "audioNotReceived": "Не получена ссылка на аудио", From 3f51a56dec51ed870a667b1d0cb24f94e2e900ed Mon Sep 17 00:00:00 2001 From: Toil Date: Wed, 27 Dec 2023 11:23:40 +0300 Subject: [PATCH 08/10] removed old phrases --- src/localization/locales/af.json | 8 +------- src/localization/locales/am.json | 8 +------- src/localization/locales/ar.json | 8 +------- src/localization/locales/az.json | 8 +------- src/localization/locales/bg.json | 8 +------- src/localization/locales/bn.json | 8 +------- src/localization/locales/bs.json | 8 +------- src/localization/locales/ca.json | 8 +------- src/localization/locales/cs.json | 8 +------- src/localization/locales/cy.json | 8 +------- src/localization/locales/da.json | 8 +------- src/localization/locales/de.json | 8 +------- src/localization/locales/el.json | 8 +------- src/localization/locales/en.json | 8 +------- src/localization/locales/es.json | 8 +------- src/localization/locales/et.json | 8 +------- src/localization/locales/eu.json | 8 +------- src/localization/locales/fa.json | 8 +------- src/localization/locales/fi.json | 8 +------- src/localization/locales/fr.json | 8 +------- src/localization/locales/gl.json | 8 +------- src/localization/locales/hi.json | 8 +------- src/localization/locales/hr.json | 8 +------- src/localization/locales/hu.json | 8 +------- src/localization/locales/hy.json | 8 +------- src/localization/locales/id.json | 8 +------- src/localization/locales/it.json | 8 +------- src/localization/locales/ja.json | 8 +------- src/localization/locales/jv.json | 8 +------- src/localization/locales/kk.json | 8 +------- src/localization/locales/km.json | 8 +------- src/localization/locales/kn.json | 8 +------- src/localization/locales/ko.json | 8 +------- src/localization/locales/lo.json | 8 +------- src/localization/locales/mk.json | 8 +------- src/localization/locales/ml.json | 8 +------- src/localization/locales/mn.json | 8 +------- src/localization/locales/ms.json | 8 +------- src/localization/locales/mt.json | 8 +------- src/localization/locales/my.json | 8 +------- src/localization/locales/ne.json | 8 +------- src/localization/locales/nl.json | 8 +------- src/localization/locales/pa.json | 8 +------- src/localization/locales/pl.json | 8 +------- src/localization/locales/pt.json | 8 +------- src/localization/locales/ro.json | 8 +------- src/localization/locales/ru.json | 8 +------- src/localization/locales/si.json | 8 +------- src/localization/locales/sk.json | 8 +------- src/localization/locales/sl.json | 8 +------- src/localization/locales/sq.json | 8 +------- src/localization/locales/sr.json | 8 +------- src/localization/locales/su.json | 8 +------- src/localization/locales/sv.json | 8 +------- src/localization/locales/sw.json | 8 +------- src/localization/locales/tr.json | 8 +------- src/localization/locales/uk.json | 8 +------- src/localization/locales/ur.json | 8 +------- src/localization/locales/uz.json | 8 +------- src/localization/locales/vi.json | 8 +------- src/localization/locales/zh.json | 8 +------- src/localization/locales/zu.json | 8 +------- 62 files changed, 62 insertions(+), 434 deletions(-) diff --git a/src/localization/locales/af.json b/src/localization/locales/af.json index e810a391..b62fdd9d 100644 --- a/src/localization/locales/af.json +++ b/src/localization/locales/af.json @@ -35,11 +35,6 @@ "VOTPremiere": "Wag vir die première om te eindig voordat jy vertaal", "VOTVideoIsTooLong": "Die Video is te lank", "VOTNoVideoIDFound": "Geen video-ID gevind nie", - "VOTFailedInitDB": "Kon nie databasis inisialiseer nie", - "VOTDBNeedUpdate": "Die databasis benodig'n opdatering, laai asseblief die bladsy", - "VOTDisabledForDBUpdating": "VOT is gedeaktiveer as gevolg van'n fout tydens die opdatering van die Databasis. Sluit alle oop oortjies met {0} en probeer weer", - "VOTFailedWriteToDB": "Data kon nie na die databasis geskryf word nie", - "VOTFailedReadFromDB": "Data kon nie verkry word uit die databasis nie", "VOTSubtitles": "Onderskrifte", "VOTSubtitlesDisabled": "Gedeaktiveer", "VOTSubtitlesMaxLength": "Onderskrifte maksimum lengte", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Tik Udemy Toegang Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Daar is geen verbinding met die bediener nie", - "VOTCloudflareDoesntSupportStreams": "Die Cloudflare weergawe van Die script ondersteun nie stroom vertaling", "searchField": "Soek...", "VOTTranslateAPIErrors": "Vertaal foute UIT DIE API", "VOTTranslationService": "Vertaaldiens", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Voer die volmagwerker-adres in", "VOTM3u8ProxyHost": "Voer die adres van die m3u8-volmagwerker in", "proxySettings": "Instaaninstellings" -} +} \ No newline at end of file diff --git a/src/localization/locales/am.json b/src/localization/locales/am.json index 54c7baa0..c8c00255 100644 --- a/src/localization/locales/am.json +++ b/src/localization/locales/am.json @@ -35,11 +35,6 @@ "VOTPremiere": "ከመተርጎምዎ በፊት ዋናው እስኪጨርስ ይጠብቁ ። ", "VOTVideoIsTooLong": "ቪዲዮው በጣም ረጅም ነው ። ", "VOTNoVideoIDFound": "ምንም የቪዲዮ መታወቂያ አልተገኘም", - "VOTFailedInitDB": "የመረጃ ቋት ማስጀመር አልተሳካም", - "VOTDBNeedUpdate": "የመረጃ ቋቱ ዝማኔ ይፈልጋል ፣ እባክዎ ገጹን እንደገና ይጫኑት", - "VOTDisabledForDBUpdating": "የመረጃ ቋቱን ሲያዘምኑ በስህተት ምክንያት ድምጽ ይሰናከላል። ሁሉንም ክፍት ትሮችን በ {0} ዝጋ እና እንደገና ይሞክሩ", - "VOTFailedWriteToDB": "መረጃ ወደ ዳታቤዝ ሊጻፍ አይችልም", - "VOTFailedReadFromDB": "መረጃው ከድር ጣቢያው ሊገኝ አይችልም ። ", "VOTSubtitles": "ንዑስ ርዕሶች", "VOTSubtitlesDisabled": "አካል ጉዳተኞች", "VOTSubtitlesMaxLength": "ንዑስ ርዕሶች ከፍተኛ ርዝመት", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "የኡዲሚ መዳረሻ ማስመሰያ ያስገቡ", "VOTUdemyData": "የተጠቃሚዎች በይነ-ተገናኝነት", "streamNoConnectionToServer": "ከአገልጋዩ ጋር ምንም ግንኙነት የለም ። ", - "VOTCloudflareDoesntSupportStreams": "የስክሪፕቱ ክላውድላሬ ስሪት የዥረት ትርጉምን አይደግፍም ። ", "searchField": "Search።..", "VOTTranslateAPIErrors": "ከ API ስህተቶችን ይተረጉሙ", "VOTTranslationService": "የትርጉም አገልግሎት", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "ተኪ ሠራተኛ አድራሻ ያስገቡ", "VOTM3u8ProxyHost": "የ m3u8 ተኪ ሰራተኛ አድራሻ ያስገቡ", "proxySettings": "የተኪ ቅንብሮች" -} +} \ No newline at end of file diff --git a/src/localization/locales/ar.json b/src/localization/locales/ar.json index 58d68f6e..ae5f9091 100644 --- a/src/localization/locales/ar.json +++ b/src/localization/locales/ar.json @@ -35,11 +35,6 @@ "VOTPremiere": "انتظر حتى ينتهي العرض الأول قبل الترجمة", "VOTVideoIsTooLong": "الفيديو طويل جداً", "VOTNoVideoIDFound": "لم يتم العثور على معرف الفيديو", - "VOTFailedInitDB": "فشل في تهيئة قاعدة البيانات", - "VOTDBNeedUpdate": "تحتاج قاعدة البيانات إلى تحديث، يرجى إعادة تحميل الصفحة", - "VOTDisabledForDBUpdating": "VOT معطل بسبب خطأ عند تحديث قاعدة البيانات. أغلق جميع علامات التبويب المفتوحة مع {0} وحاول مرة أخرى", - "VOTFailedWriteToDB": "لم يتمكن من كتابة البيانات إلى قاعدة البيانات", - "VOTFailedReadFromDB": "لم يتمكن من استرداد البيانات من قاعدة البيانات", "VOTSubtitles": "ترجمات", "VOTSubtitlesDisabled": "عاجز", "VOTSubtitlesMaxLength": "أقصى طول للترجمات", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "أدخل رمز الوصول أوديمي", "VOTUdemyData": "بيانات أوديمي", "streamNoConnectionToServer": "لا يوجد اتصال بالخادم", - "VOTCloudflareDoesntSupportStreams": "النسخة كلودفلاري من البرنامج النصي لا يدعم ترجمة تيار", "searchField": "بحث...", "VOTTranslateAPIErrors": "ترجمة الأخطاء من واجهة برمجة التطبيقات", "VOTTranslationService": "خدمة الترجمة", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "أدخل عنوان عامل الوكيل", "VOTM3u8ProxyHost": "أدخل عنوان عامل الوكيل إم 3 يو 8", "proxySettings": "إعدادات الوكيل" -} +} \ No newline at end of file diff --git a/src/localization/locales/az.json b/src/localization/locales/az.json index 161cd7cb..85ff2af2 100644 --- a/src/localization/locales/az.json +++ b/src/localization/locales/az.json @@ -35,11 +35,6 @@ "VOTPremiere": "Tərcümə etməzdən əvvəl premyeranın bitməsini gözləyin", "VOTVideoIsTooLong": "Video çox uzundur", "VOTNoVideoIDFound": "Video Id tapılmadı", - "VOTFailedInitDB": "Verilənlər bazasını başlatmaq mümkün olmadı", - "VOTDBNeedUpdate": "Verilənlər bazasının yenilənməsi lazımdır, zəhmət olmasa səhifəni yenidən yükləyin", - "VOTDisabledForDBUpdating": "VOT verilənlər bazasını yeniləyərkən bir səhv səbəbindən söndürülür. {0} ilə bütün açıq nişanları bağlayın və yenidən cəhd edin", - "VOTFailedWriteToDB": "Məlumat verilənlər bazasına yazıla bilmədi", - "VOTFailedReadFromDB": "Verilənlər bazasından məlumat çıxarıla bilmədi", "VOTSubtitles": "Altyazı", "VOTSubtitlesDisabled": "Əlil", "VOTSubtitlesMaxLength": "Maksimum Altyazı uzunluğu", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy giriş tokenini daxil edin", "VOTUdemyData": "Udemy Məlumatları", "streamNoConnectionToServer": "Server bağlantısı yoxdur", - "VOTCloudflareDoesntSupportStreams": "Cloudflare skriptinin versiyası axını dəstəkləmir", "searchField": "Axtarış...", "VOTTranslateAPIErrors": "API-dən səhvlərin tərcüməsi", "VOTTranslationService": "Tərcümə xidməti", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Proxy serverin iş ünvanını daxil edin", "VOTM3u8ProxyHost": "M3u8 işləyən proxy server ünvanını daxil edin", "proxySettings": "Proxy server parametrləri" -} +} \ No newline at end of file diff --git a/src/localization/locales/bg.json b/src/localization/locales/bg.json index 499f0cd4..a72bffee 100644 --- a/src/localization/locales/bg.json +++ b/src/localization/locales/bg.json @@ -35,11 +35,6 @@ "VOTPremiere": "Изчакайте премиерата да приключи, преди да преведете", "VOTVideoIsTooLong": "Видеото е твърде дълго", "VOTNoVideoIDFound": "Не е намерен видео идентификатор", - "VOTFailedInitDB": "Грешка при инициализиране на базата данни", - "VOTDBNeedUpdate": "Базата данни се нуждае от актуализация, моля презаредете страницата", - "VOTDisabledForDBUpdating": "Глас е деактивиран поради грешка при актуализиране на Базата данни. Затворете всички отворени раздели с {0} и опитайте отново", - "VOTFailedWriteToDB": "Данните не могат да бъдат записани в базата данни", - "VOTFailedReadFromDB": "Данните не могат да бъдат извлечени от базата данни", "VOTSubtitles": "Субтитри", "VOTSubtitlesDisabled": "Изключено", "VOTSubtitlesMaxLength": "Субтитри максимална дължина", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Въведете Жетон За Достъп", "VOTUdemyData": "Данни Udemy", "streamNoConnectionToServer": "Няма връзка със сървъра", - "VOTCloudflareDoesntSupportStreams": "Версията на скрипта не поддържа поток превод", "searchField": "Търси...", "VOTTranslateAPIErrors": "Грешки при превод от АПИ", "VOTTranslationService": "Преводачески Услуги", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Въведете адреса на пълномощника", "VOTM3u8ProxyHost": "Въведете адреса на прокси служителя м3у8", "proxySettings": "Настройки На Прокси Сървъра" -} +} \ No newline at end of file diff --git a/src/localization/locales/bn.json b/src/localization/locales/bn.json index 6e33c39e..ae6012bc 100644 --- a/src/localization/locales/bn.json +++ b/src/localization/locales/bn.json @@ -35,11 +35,6 @@ "VOTPremiere": "অনুবাদ পূর্বরাতরে প্রিমিয়ার শেষ হওয়া পর্যন্ত অপেক্ষা করুন", "VOTVideoIsTooLong": "ভিডিওটি খুব দীর্ঘদিন", "VOTNoVideoIDFound": "ভিডিও আইডি পাওয়া যায়নি", - "VOTFailedInitDB": "ডাটাবেস প্রস্তুত করতে ব্যর্থ হয়েছে", - "VOTDBNeedUpdate": "ডাটাবেসটি আপডেট করা প্রয়োজন, দয়া করে পৃষ্ঠাটি পুনরায় লোড করুন", - "VOTDisabledForDBUpdating": "ডাটাবেস আপডেট সময়ে VOT অক্ষম করা হয়েছে। {0} সমস্ত ট্যাব বন্ধ করুন এবং আবার চেষ্টা করুন", - "VOTFailedWriteToDB": "ডাটাবেসে তথ্য লিখতে ব্যর্থ হয়েছে", - "VOTFailedReadFromDB": "ডাটাবেস থেকে তথ্য পাঠানো যায়নি", "VOTSubtitles": "সাবটাইটেল", "VOTSubtitlesDisabled": "অক্ষম", "VOTSubtitlesMaxLength": "সাবটাইটেলের সর্বাধিক দৈর্ঘ্য", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "উদেমি অ্যাক্সেস টোকেন লিখুন", "VOTUdemyData": "উদেমি ডেটা", "streamNoConnectionToServer": "সার্ভারের সাথে কোন সংযোগ নেই", - "VOTCloudflareDoesntSupportStreams": "স্ক্রিপ্টের ক্লাউডফ্লেয়ার সংস্করণটি স্ট্রিম অনুবাদ সমর্থন করে না", "searchField": "অনুসন্ধান...", "VOTTranslateAPIErrors": "এপিআই থেকে ত্রুটিগুলি অনুবাদ করুন", "VOTTranslationService": "অনুবাদ সেবা", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "প্রক্সি কর্মী ঠিকানা লিখুন", "VOTM3u8ProxyHost": "এম 3 ইউ 8 প্রক্সি কর্মীর ঠিকানা লিখুন", "proxySettings": "প্রক্সি সেটিংস" -} +} \ No newline at end of file diff --git a/src/localization/locales/bs.json b/src/localization/locales/bs.json index 10e0e52e..2d44c802 100644 --- a/src/localization/locales/bs.json +++ b/src/localization/locales/bs.json @@ -35,11 +35,6 @@ "VOTPremiere": "Sačekajte da se premijera završi prije prevođenja", "VOTVideoIsTooLong": "Video je predugačak", "VOTNoVideoIDFound": "Nedostaje XPM zaglavlje", - "VOTFailedInitDB": "Neuspješno inicijaliziranje baze podataka", - "VOTDBNeedUpdate": "Baza podataka treba ažuriranje, molimo ponovo učitajte stranicu", - "VOTDisabledForDBUpdating": "VOT je onemogućen zbog greške prilikom ažuriranja baze podataka. Zatvorite sve otvorene kartice sa {0} i pokušajte ponovo", - "VOTFailedWriteToDB": "Podaci se ne mogu upisati", - "VOTFailedReadFromDB": "Podaci se ne mogu preuzeti iz baze podataka", "VOTSubtitles": "Titlovi", "VOTSubtitlesDisabled": "Isključeno", "VOTSubtitlesMaxLength": "Titlovi maksimalna dužina", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Unesite Udemy Token Za Pristup", "VOTUdemyData": "Udemy Podaci", "streamNoConnectionToServer": "Nema veze sa serverom", - "VOTCloudflareDoesntSupportStreams": "Cloudflare verzija skripte ne podržava prijevod toka", "searchField": "Traži...", "VOTTranslateAPIErrors": "Prevedi greške iz API-ja", "VOTTranslationService": "Prevodilačka Služba", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Unesite adresu proxy radnika", "VOTM3u8ProxyHost": "Unesite adresu m3u8 proxy radnika", "proxySettings": "_postavke ... " -} +} \ No newline at end of file diff --git a/src/localization/locales/ca.json b/src/localization/locales/ca.json index 2f686a8c..57d3acf6 100644 --- a/src/localization/locales/ca.json +++ b/src/localization/locales/ca.json @@ -35,11 +35,6 @@ "VOTPremiere": "Espereu que finalitzi l'estrena abans de traduir", "VOTVideoIsTooLong": "El vídeo és massa llarg", "VOTNoVideoIDFound": "No s ' ha trobat cap identificador de vídeo", - "VOTFailedInitDB": "Ha fallat en inicialitzar la base de dades", - "VOTDBNeedUpdate": "La base de dades necessita una actualització, torneu a carregar la pàgina", - "VOTDisabledForDBUpdating": "EL VOT està desactivat a causa d'un error en actualitzar la Base de Dades. Tanqueu totes les pestanyes obertes amb {0} i torneu-ho a provar", - "VOTFailedWriteToDB": "Les dades no es poden escriure a la base de dades", - "VOTFailedReadFromDB": "Les dades no es poden recuperar de la base de dades", "VOTSubtitles": "Subtítols", "VOTSubtitlesDisabled": "Deshabilitat", "VOTSubtitlesMaxLength": "Longitud màxima dels subtítols", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Introduïu El Testimoni D ' Accés A Udemy", "VOTUdemyData": "Dades Udemy", "streamNoConnectionToServer": "No hi ha connexió amb el servidor", - "VOTCloudflareDoesntSupportStreams": "La versió De Cloudflare de l'script no admet la traducció de flux", "searchField": "Cerca...", "VOTTranslateAPIErrors": "Traduir errors des DE L'API", "VOTTranslationService": "Servei De Traducció", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Introduïu l'adreça del treballador del servidor intermediari", "VOTM3u8ProxyHost": "Introduïu l'adreça del treballador intermediari m3u8", "proxySettings": "Arranjament Del Servidor Intermediari" -} +} \ No newline at end of file diff --git a/src/localization/locales/cs.json b/src/localization/locales/cs.json index 6aaf3778..99d3ef82 100644 --- a/src/localization/locales/cs.json +++ b/src/localization/locales/cs.json @@ -35,11 +35,6 @@ "VOTPremiere": "Počkejte, než skončí premiéra, než provedete překlad", "VOTVideoIsTooLong": "Video je příliš dlouhé", "VOTNoVideoIDFound": "Nenalezeno ID videa", - "VOTFailedInitDB": "Nepodařilo se inicializovat databázi", - "VOTDBNeedUpdate": "Databáze potřebuje aktualizaci, prosím, znovu načtěte stránku", - "VOTDisabledForDBUpdating": "VOT je vypnut kvůli chybě při aktualizaci databáze. Zavřete všechny otevřené karty s {0} a zkuste to znovu", - "VOTFailedWriteToDB": "Nepodařilo se zapsat data do databáze", - "VOTFailedReadFromDB": "Nepodařilo se načíst data z databáze", "VOTSubtitles": "Titulky", "VOTSubtitlesDisabled": "Vypnuto", "VOTSubtitlesMaxLength": "Maximální délka titulků", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Zadejte Udemy Přístupový Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Neexistuje žádné připojení k serveru", - "VOTCloudflareDoesntSupportStreams": "Verze skriptu Cloudflare nepodporuje překlad streamu", "searchField": "Vyhledávání...", "VOTTranslateAPIErrors": "Přeložit chyby z API", "VOTTranslationService": "překlad", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Zadejte adresu proxy pracovníka", "VOTM3u8ProxyHost": "Zadejte adresu pracovníka proxy m3u8", "proxySettings": "Nastavení Serveru Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/cy.json b/src/localization/locales/cy.json index 140858e7..1784b156 100644 --- a/src/localization/locales/cy.json +++ b/src/localization/locales/cy.json @@ -35,11 +35,6 @@ "VOTPremiere": "Arhoswch i'r premiere ddod i ben cyn cyfieithu", "VOTVideoIsTooLong": "Fideo yn rhy hir", "VOTNoVideoIDFound": "Ni chanfuwyd ID fideo", - "VOTFailedInitDB": "Methwyd ymgychwyn y gronfa ddata", - "VOTDBNeedUpdate": "Mae angen diweddaru'r gronfa ddata, ail-lwythwch y dudalen", - "VOTDisabledForDBUpdating": "Mae PLEIDLAIS wedi ei analluogi oherwydd gwall wrth ddiweddaru'r Gronfa Ddata. Cau pob tab agored gyda {0} a cheisio eto", - "VOTFailedWriteToDB": "Could not be written to the database saesneg", - "VOTFailedReadFromDB": "Methwyd cyrchu'r data o'r gronfa ddata", "VOTSubtitles": "_isdeitlau", "VOTSubtitlesDisabled": "Analluogwyd", "VOTSubtitlesMaxLength": "Is-deitlau hyd max", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Rhowch Docyn Mynediad Udemy", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Nid oes cysylltiad i'r defnyddiwr", - "VOTCloudflareDoesntSupportStreams": "Nid yw'r Fersiwn Cloudflare o'r sgript yn cefnogi cyfieithu ffrwd", "searchField": "Chwilio...", "VOTTranslateAPIErrors": "Cyfieithu gwallau O'R API", "VOTTranslationService": "Gwasanaeth Cyfieithu", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Rhowch gyfeiriad y gweithiwr dirprwy", "VOTM3u8ProxyHost": "Rhowch gyfeiriad y gweithiwr dirprwy m3u8", "proxySettings": "Gosodiadau Dirprwy" -} +} \ No newline at end of file diff --git a/src/localization/locales/da.json b/src/localization/locales/da.json index 7a4edb52..7c1a44d5 100644 --- a/src/localization/locales/da.json +++ b/src/localization/locales/da.json @@ -35,11 +35,6 @@ "VOTPremiere": "Vent til premieren slutter, før du oversætter", "VOTVideoIsTooLong": "Videoen er for lang", "VOTNoVideoIDFound": "Ingen video-ID fundet", - "VOTFailedInitDB": "Kunne ikke initialisere databasen", - "VOTDBNeedUpdate": "Databasen har brug for en opdatering, skal du genindlæse siden", - "VOTDisabledForDBUpdating": "VOT er deaktiveret på grund af en fejl ved opdatering af databasen. Luk alle åbne faner med {0}, og prøv igen", - "VOTFailedWriteToDB": "Data kunne ikke skrives til databasen", - "VOTFailedReadFromDB": "Data kunne ikke hentes fra databasen", "VOTSubtitles": "Undertekster", "VOTSubtitlesDisabled": "Deaktiveret", "VOTSubtitlesMaxLength": "Undertekster maks længde", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Indtast Udemy Access Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Der er ingen forbindelse til serveren", - "VOTCloudflareDoesntSupportStreams": "Cloudflare-versionen af scriptet understøtter ikke streamoversættelse", "searchField": "Søge...", "VOTTranslateAPIErrors": "Oversæt fejl fra API", "VOTTranslationService": "oversættelsestjenesterne", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Indtast adressen på fuldmægtig", "VOTM3u8ProxyHost": "Indtast adressen på M3U8 fuldmægtig", "proxySettings": "Fuldmagtsindstillinger" -} +} \ No newline at end of file diff --git a/src/localization/locales/de.json b/src/localization/locales/de.json index 0645a143..d79d3a04 100644 --- a/src/localization/locales/de.json +++ b/src/localization/locales/de.json @@ -35,11 +35,6 @@ "VOTPremiere": "Warten Sie, bis die Premiere beendet ist, bevor Sie übersetzen", "VOTVideoIsTooLong": "Video ist zu lang", "VOTNoVideoIDFound": "Keine Video-ID gefunden", - "VOTFailedInitDB": "Datenbank konnte nicht initialisiert werden", - "VOTDBNeedUpdate": "Die Datenbank muss aktualisiert werden, bitte laden Sie die Seite neu", - "VOTDisabledForDBUpdating": "VOT wurde aufgrund eines Fehlers beim Aktualisieren der Datenbank deaktiviert. Schließen Sie alle geöffneten Tabs mit {0} und versuchen Sie es erneut", - "VOTFailedWriteToDB": "Daten konnten nicht in die Datenbank geschrieben werden", - "VOTFailedReadFromDB": "Konnte keine Daten aus der Datenbank abrufen", "VOTSubtitles": "Untertitel", "VOTSubtitlesDisabled": "Deaktiviert", "VOTSubtitlesMaxLength": "Untertitel maximale Länge", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Geben Sie das Udemy-Zugriffstoken ein", "VOTUdemyData": "Udemy-Daten", "streamNoConnectionToServer": "Es besteht keine Verbindung zum Server", - "VOTCloudflareDoesntSupportStreams": "Die Cloudflare-Version des Skripts unterstützt keine Stream-Übersetzung", "searchField": "Suche...", "VOTTranslateAPIErrors": "Fehler aus der API übersetzen", "VOTTranslationService": "Übersetzungsdienst", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Geben Sie die Proxy-Worker-Adresse ein", "VOTM3u8ProxyHost": "Geben Sie die Adresse des m3u8-Proxy-Mitarbeiters ein", "proxySettings": "Proxyeinstellungen" -} +} \ No newline at end of file diff --git a/src/localization/locales/el.json b/src/localization/locales/el.json index e7a8106e..e5a45f7a 100644 --- a/src/localization/locales/el.json +++ b/src/localization/locales/el.json @@ -35,11 +35,6 @@ "VOTPremiere": "Περιμένετε να τελειώσει η πρεμιέρα πριν από τη μετάφραση", "VOTVideoIsTooLong": "Το βίντεο είναι πολύ μεγάλο", "VOTNoVideoIDFound": "Δεν βρέθηκε αναγνωριστικό βίντεο", - "VOTFailedInitDB": "Αποτυχία αρχικοποίησης της βάσης δεδομένων", - "VOTDBNeedUpdate": "Η βάση δεδομένων χρειάζεται ενημέρωση, φορτώστε ξανά τη σελίδα", - "VOTDisabledForDBUpdating": "Το VOT είναι απενεργοποιημένο λόγω σφάλματος κατά την ενημέρωση της βάσης δεδομένων. Κλείστε όλες τις ανοιχτές καρτέλες με {0} και δοκιμάστε ξανά", - "VOTFailedWriteToDB": "Δεν ήταν δυνατή η εγγραφή δεδομένων στη βάση δεδομένων", - "VOTFailedReadFromDB": "Δεν ήταν δυνατή η ανάκτηση δεδομένων από τη βάση δεδομένων", "VOTSubtitles": "Υπότιτλοι", "VOTSubtitlesDisabled": "Απενεργοποιημένη", "VOTSubtitlesMaxLength": "Υπότιτλοι ανώτατο μήκος", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Εισαγάγετε Το Διακριτικό Πρόσβασης Udemy", "VOTUdemyData": "Δεδομένα Udemy", "streamNoConnectionToServer": "Δεν υπάρχει σύνδεση με το διακομιστή", - "VOTCloudflareDoesntSupportStreams": "Η έκδοση Cloudflare του σεναρίου δεν υποστηρίζει μετάφραση ροής", "searchField": "Αναζήτηση...", "VOTTranslateAPIErrors": "Μετάφραση σφαλμάτων από το API", "VOTTranslationService": "μετάφραση", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Εισαγάγετε τη διεύθυνση διακομιστή μεσολάβησης", "VOTM3u8ProxyHost": "Εισαγάγετε τη διεύθυνση του διακομιστή μεσολάβησης m3u8", "proxySettings": "Ρυθμίσεις Διακομιστή Μεσολάβησης" -} +} \ No newline at end of file diff --git a/src/localization/locales/en.json b/src/localization/locales/en.json index 6f3f9092..f4c1eb33 100644 --- a/src/localization/locales/en.json +++ b/src/localization/locales/en.json @@ -35,11 +35,6 @@ "VOTPremiere": "Wait for the premiere to end before translating", "VOTVideoIsTooLong": "Video is too long", "VOTNoVideoIDFound": "No video ID found", - "VOTFailedInitDB": "Failed to initialize database", - "VOTDBNeedUpdate": "The database needs an update, please reload the page", - "VOTDisabledForDBUpdating": "VOT is disabled due to an error when updating the Database. Close all open tabs with {0} and try again", - "VOTFailedWriteToDB": "Data could not be written to the database", - "VOTFailedReadFromDB": "Data could not be retrieved from the database", "VOTSubtitles": "Subtitles", "VOTSubtitlesDisabled": "Disabled", "VOTSubtitlesMaxLength": "Subtitles max length", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Enter Udemy Access Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "There is no connection to the server", - "VOTCloudflareDoesntSupportStreams": "The Cloudflare version of the script does not support stream translation", "searchField": "Search...", "VOTTranslateAPIErrors": "Translate errors from the API", "VOTTranslationService": "Translation Service", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Enter the proxy worker address", "VOTM3u8ProxyHost": "Enter the address of the m3u8 proxy worker", "proxySettings": "Proxy Settings" -} +} \ No newline at end of file diff --git a/src/localization/locales/es.json b/src/localization/locales/es.json index dc36c830..7f84761e 100644 --- a/src/localization/locales/es.json +++ b/src/localization/locales/es.json @@ -35,11 +35,6 @@ "VOTPremiere": "Espere a que termine el estreno antes de traducir", "VOTVideoIsTooLong": "El vídeo es demasiado largo", "VOTNoVideoIDFound": "No se encontró ID de video", - "VOTFailedInitDB": "Error al inicializar la base de datos", - "VOTDBNeedUpdate": "La base de datos necesita una actualización, por favor vuelva a cargar la página", - "VOTDisabledForDBUpdating": "VOT está deshabilitado debido a un error al actualizar la base de datos. Cierre todas las pestañas abiertas con {0} e inténtelo de nuevo", - "VOTFailedWriteToDB": "Los datos no se pudieron escribir en la base de datos", - "VOTFailedReadFromDB": "No se pudieron recuperar datos de la base de datos", "VOTSubtitles": "Subtítulos", "VOTSubtitlesDisabled": "Discapacitados", "VOTSubtitlesMaxLength": "Duración máxima de los subtítulos", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Introduce el Token de Acceso de Udemy", "VOTUdemyData": "Datos de Udemy", "streamNoConnectionToServer": "No hay conexión con el servidor", - "VOTCloudflareDoesntSupportStreams": "La versión de Cloudflare del script no admite la traducción de secuencias", "searchField": "Búsqueda...", "VOTTranslateAPIErrors": "Traducir errores de la API", "VOTTranslationService": "Servicio de Traducción", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Ingrese la dirección del trabajador proxy", "VOTM3u8ProxyHost": "Ingrese la dirección del trabajador proxy m3u8", "proxySettings": "Configuración de Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/et.json b/src/localization/locales/et.json index b62bb6e1..2281dfc4 100644 --- a/src/localization/locales/et.json +++ b/src/localization/locales/et.json @@ -35,11 +35,6 @@ "VOTPremiere": "Enne tõlkimist oodake, kuni esietendus lõpeb", "VOTVideoIsTooLong": "Video on liiga pikk", "VOTNoVideoIDFound": "Video ID-d ei leitud", - "VOTFailedInitDB": "Andmebaasi lähtestamine nurjus", - "VOTDBNeedUpdate": "Andmebaas vajab värskendust, palun laadige leht uuesti", - "VOTDisabledForDBUpdating": "VOT on andmebaasi värskendamisel vea tõttu keelatud. Sulgege kõik avatud vahelehed nupuga {0} ja proovige uuesti", - "VOTFailedWriteToDB": "Andmeid pole võimalik andmebaasi kirjutada", - "VOTFailedReadFromDB": "Andmeid pole andmebaasist võimalik hankida", "VOTSubtitles": "Subtiitrid", "VOTSubtitlesDisabled": "Puudega", "VOTSubtitlesMaxLength": "Subtiitrid max pikkus", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Sisestage Udemy Juurdepääsuluba", "VOTUdemyData": "Udemy Andmed", "streamNoConnectionToServer": "Serveriga pole ühendust", - "VOTCloudflareDoesntSupportStreams": "Skripti Cloudflare versioon ei toeta voo tõlkimist", "searchField": "Otsing...", "VOTTranslateAPIErrors": "Tõlgi vead API-st", "VOTTranslationService": "tõlketeenistus", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Sisestage puhverserveri töötaja aadress", "VOTM3u8ProxyHost": "Sisestage m3u8 puhverserveri töötaja aadress", "proxySettings": "Puhverserveri Seaded" -} +} \ No newline at end of file diff --git a/src/localization/locales/eu.json b/src/localization/locales/eu.json index 8a4660f0..19c10fc7 100644 --- a/src/localization/locales/eu.json +++ b/src/localization/locales/eu.json @@ -35,11 +35,6 @@ "VOTPremiere": "Itxaron estreinaldia amaitu arte itzulpena egin aurretik", "VOTVideoIsTooLong": "Bideoa luzeegia da", "VOTNoVideoIDFound": "Ez da bideorik aurkitu", - "VOTFailedInitDB": "Huts egin du datu-basea hasieratzean", - "VOTDBNeedUpdate": "Datu-baseak eguneratze bat behar du, mesedez, orria berkargatu", - "VOTDisabledForDBUpdating": "BOTOA desgaituta Dago datu-Basea eguneratzean errore bat gertatu delako. Itxi irekitako fitxa guztiak {0} (r) ekin eta saiatu berriro", - "VOTFailedWriteToDB": "Ezin izan dira datuak datu-basean idatzi", - "VOTFailedReadFromDB": "Ezin izan dira datuak datu-basetik eskuratu", "VOTSubtitles": "Azpitituluak", "VOTSubtitlesDisabled": "Desgaituta", "VOTSubtitlesMaxLength": "Azpitituluak gehienezko luzera", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Sartu Udemy Sarbide-Tokena", "VOTUdemyData": "Udemy Datuak", "streamNoConnectionToServer": "Ez dago konexiorik zerbitzariarekin", - "VOTCloudflareDoesntSupportStreams": "Gidoiaren hodei-izpi bertsioak ez du stream itzulpena onartzen", "searchField": "Bilatu...", "VOTTranslateAPIErrors": "Itzuli ERROREAK APITIK", "VOTTranslationService": "Itzulpen Zerbitzua", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Sartu ordezko langilearen helbidea", "VOTM3u8ProxyHost": "Sartu m3u8 ordezkariaren helbidea", "proxySettings": "Ordezko Ezarpenak" -} +} \ No newline at end of file diff --git a/src/localization/locales/fa.json b/src/localization/locales/fa.json index 4e73ab6d..04cc9550 100644 --- a/src/localization/locales/fa.json +++ b/src/localization/locales/fa.json @@ -35,11 +35,6 @@ "VOTPremiere": "صبر کنید تا پخش انتشار قبلی به پایان برسد", "VOTVideoIsTooLong": "ویدیو بیشتر از حد طولانی است", "VOTNoVideoIDFound": "هیچ شناسه ویدیویی پیدا نشد", - "VOTFailedInitDB": "مقداردهی اولیه پایگاه داده انجام نشد", - "VOTDBNeedUpdate": "به روز رسانی پایگاه داده لازم است، لطفاً صفحه را دوباره بارگذاری کنید", - "VOTDisabledForDBUpdating": "VOT به دلیل خطای به‌روزرسانی پایگاه داده غیرفعال شده است. تمام تب های با {0} را ببندید و دوباره تلاش کنید.", - "VOTFailedWriteToDB": "نوشتن اطلاعات در پایگاه داده موفقیت آمیز نبود", - "VOTFailedReadFromDB": "خواندن اطلاعات از پایگاه داده موفقیت آمیز نبود", "VOTSubtitles": "زیرنویس", "VOTSubtitlesDisabled": "غیرفعال شده است", "VOTSubtitlesMaxLength": "حداکثر طول زیرنویس", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "توکن دسترسی Udemy را وارد کنید", "VOTUdemyData": "داده های Udemy", "streamNoConnectionToServer": "هیچ ارتباطی با سرور وجود ندارد", - "VOTCloudflareDoesntSupportStreams": "نسخه cloudflare از اسکریپت از ترجمه جریان پشتیبانی نمی کند", "searchField": "جستجو کن..", "VOTTranslateAPIErrors": "ترجمه خطاها از API", "VOTTranslationService": "خدمات ترجمه", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "آدرس کارگر پروکسی را وارد کنید", "VOTM3u8ProxyHost": "آدرس کارگر پروکسی m3u8 را وارد کنید", "proxySettings": "تنظیمات پروکسی" -} +} \ No newline at end of file diff --git a/src/localization/locales/fi.json b/src/localization/locales/fi.json index 19955b27..c9209ac8 100644 --- a/src/localization/locales/fi.json +++ b/src/localization/locales/fi.json @@ -35,11 +35,6 @@ "VOTPremiere": "Odota ensi-illan päättymistä ennen kääntämistä", "VOTVideoIsTooLong": "Video on liian pitkä", "VOTNoVideoIDFound": "VIDEOTUNNISTETTA ei löytynyt", - "VOTFailedInitDB": "Tietokannan alustus epäonnistui", - "VOTDBNeedUpdate": "Tietokanta tarvitsee päivityksen, lataa sivu uudelleen", - "VOTDisabledForDBUpdating": "VOT on poistettu käytöstä tietokantaa päivitettäessä tapahtuneen virheen vuoksi. Sulje kaikki avoimet välilehdet komennolla {0} ja yritä uudelleen", - "VOTFailedWriteToDB": "Tietoja ei voitu kirjoittaa tietokantaan", - "VOTFailedReadFromDB": "Tietoja ei voitu hakea tietokannasta", "VOTSubtitles": "Tekstitykset", "VOTSubtitlesDisabled": "Käytöstä", "VOTSubtitlesMaxLength": "Tekstitykset max length", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Enter Udemy Access Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Palvelimeen ei ole yhteyttä", - "VOTCloudflareDoesntSupportStreams": "Skriptin Cloudflare-versio ei tue stream-käännöstä", "searchField": "Etsiä...", "VOTTranslateAPIErrors": "Käännä virheet API: sta", "VOTTranslationService": "käännöspalvelu", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Anna valtakirjan työntekijän osoite", "VOTM3u8ProxyHost": "Anna M3U8-valtakirjan työntekijän osoite", "proxySettings": "Välityspalvelimen Asetukset" -} +} \ No newline at end of file diff --git a/src/localization/locales/fr.json b/src/localization/locales/fr.json index 26c12f72..7a79f26b 100644 --- a/src/localization/locales/fr.json +++ b/src/localization/locales/fr.json @@ -35,11 +35,6 @@ "VOTPremiere": "Attendez la fin de la première avant de traduire", "VOTVideoIsTooLong": "La vidéo est trop longue", "VOTNoVideoIDFound": "ID vidéo introuvable", - "VOTFailedInitDB": "Impossible d'initialiser la base de données", - "VOTDBNeedUpdate": "la Base de données a besoin d'une mise à jour, veuillez recharger la page", - "VOTDisabledForDBUpdating": "VOT est désactivé en raison d'une erreur lors de la mise à jour de la Base de Données. Fermez tous les onglets ouverts avec {0} et essayez à nouveau", - "VOTFailedWriteToDB": "Impossible d'écrire les données dans la base de données", - "VOTFailedReadFromDB": "Impossible de récupérer les données de la base de données", "VOTSubtitles": "Les sous-titres", "VOTSubtitlesDisabled": "Désactivé", "VOTSubtitlesMaxLength": "Longueur max des sous-titres", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Entrez le Jeton d'accès Udemy", "VOTUdemyData": "Données Udemy", "streamNoConnectionToServer": "Il n'y a pas de connexion au serveur", - "VOTCloudflareDoesntSupportStreams": "La version Cloudflare du script ne prend pas en charge la traduction de flux", "searchField": "Chercher...", "VOTTranslateAPIErrors": "Traduire les erreurs de l'API", "VOTTranslationService": "Service de Traduction", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Entrez l'adresse du travailleur mandataire", "VOTM3u8ProxyHost": "Entrez l'adresse du travailleur proxy m3u8", "proxySettings": "Paramètres du Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/gl.json b/src/localization/locales/gl.json index e9effca5..3512ddd2 100644 --- a/src/localization/locales/gl.json +++ b/src/localization/locales/gl.json @@ -35,11 +35,6 @@ "VOTPremiere": "Espere a que a estrea remate antes de traducir", "VOTVideoIsTooLong": "O vídeo é demasiado longo", "VOTNoVideoIDFound": "Non se atopou NINGUNHA IDENTIFICACIÓN de vídeo", - "VOTFailedInitDB": "Fallou a inicialización da base de datos", - "VOTDBNeedUpdate": "A base de datos necesita unha actualización, por favor, recargue a páxina", - "VOTDisabledForDBUpdating": "VOT está desactivado debido a un erro ao actualizar a Base de Datos. Pechar todas as pestanas abertas con {0} e tentar de novo", - "VOTFailedWriteToDB": "Os datos non poden ser escritos na base de datos", - "VOTFailedReadFromDB": "Non se puideron obter datos da base de datos", "VOTSubtitles": "Subtítulos", "VOTSubtitlesDisabled": "Desactivado", "VOTSubtitlesMaxLength": "Subtítulos lonxitude máxima", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Introduza O Token De Acceso Udemy", "VOTUdemyData": "Datos De Udemy", "streamNoConnectionToServer": "Non hai conexión co servidor", - "VOTCloudflareDoesntSupportStreams": "A versión Cloudflare do script non admite a tradución de fluxos", "searchField": "Busca...", "VOTTranslateAPIErrors": "Traducir erros DA API", "VOTTranslationService": "Servizo De Tradución", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Introduza o enderezo proxy worker", "VOTM3u8ProxyHost": "Introduza o enderezo do traballador proxy m3u8", "proxySettings": "Configuración Do Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/hi.json b/src/localization/locales/hi.json index fdf9741a..b8e62eae 100644 --- a/src/localization/locales/hi.json +++ b/src/localization/locales/hi.json @@ -35,11 +35,6 @@ "VOTPremiere": "उपलब्ध हुए प्रीमियर से पहले अनुवाद करें", "VOTVideoIsTooLong": "वीडियो बहुत लंबा है", "VOTNoVideoIDFound": "वीडियो आईडी नहीं मिली", - "VOTFailedInitDB": "डेटाबेस को प्रारंभ करने में विफल रहा", - "VOTDBNeedUpdate": "डेटाबेस को अद्यतन किया जाना चाहिए, कृपया पृष्ठ स्क्रीन को रिफ्रेश करें", - "VOTDisabledForDBUpdating": "बाकी डेटाबेस अपडेट करने में त्रुटि के कारण, वीओटी निष्क्रिय हो गया है। कृपया {0} के सभी खिड़कियों को बंद करें और फिर से प्रयास करें।", - "VOTFailedWriteToDB": "डेटाबेस में डेटा लिखने में विफल रहा", - "VOTFailedReadFromDB": "डेटाबेस से डेटा प्राप्त करने में विफल रहा", "VOTSubtitles": "सबटाइटल्स", "VOTSubtitlesDisabled": "बंद हैं", "VOTSubtitlesMaxLength": "सबटाइटल की अधिकतम लंबाई", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "उदमी एक्सेस टोकन दर्ज करें", "VOTUdemyData": "उदमी डेटा", "streamNoConnectionToServer": "सर्वर से कोई संबंध नहीं है", - "VOTCloudflareDoesntSupportStreams": "स्क्रिप्ट का क्लाउडफ्लेयर संस्करण स्ट्रीम अनुवाद का समर्थन नहीं करता है", "searchField": "खोज...", "VOTTranslateAPIErrors": "एपीआई से त्रुटियों का अनुवाद करें", "VOTTranslationService": "अनुवाद सेवा", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "प्रॉक्सी कार्यकर्ता पता दर्ज करें", "VOTM3u8ProxyHost": "एम 3 यू 8 प्रॉक्सी कार्यकर्ता का पता दर्ज करें", "proxySettings": "प्रॉक्सी सेटिंग्स" -} +} \ No newline at end of file diff --git a/src/localization/locales/hr.json b/src/localization/locales/hr.json index 6b8212fa..db575167 100644 --- a/src/localization/locales/hr.json +++ b/src/localization/locales/hr.json @@ -35,11 +35,6 @@ "VOTPremiere": "Pričekajte da premijera završi prije nego što prevedete", "VOTVideoIsTooLong": "Video je predug", "VOTNoVideoIDFound": "ID videozapisa nije pronađen", - "VOTFailedInitDB": "Inicijalizacija baze podataka nije uspjela", - "VOTDBNeedUpdate": "Baza podataka treba osvježiti, ponovno učitajte stranicu", - "VOTDisabledForDBUpdating": "Onemogućeno zbog pogreške prilikom ažuriranja baze podataka. Zatvorite sve otvorene kartice s {0} i pokušajte ponovo", - "VOTFailedWriteToDB": "Podaci se ne mogu zapisati u bazu podataka", - "VOTFailedReadFromDB": "Podaci se ne mogu izvući iz baze podataka", "VOTSubtitles": "Titlovi", "VOTSubtitlesDisabled": "Nesposoban za rad", "VOTSubtitlesMaxLength": "Maksimalna duljina titlova", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Unesite pristupni token", "VOTUdemyData": "Podaci Udemy", "streamNoConnectionToServer": "Nema veze s poslužiteljem", - "VOTCloudflareDoesntSupportStreams": "Verzija skripte ae ne podržava streaming uživo", "searchField": "Traži...", "VOTTranslateAPIErrors": "Prevođenje pogrešaka iz", "VOTTranslationService": "Usluga prevođenja", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Unesite radnu adresu opunomoćenika", "VOTM3u8ProxyHost": "Unesite adresu radnog opunomoćenika od 93 do 8", "proxySettings": "Postavke opunomoćenika" -} +} \ No newline at end of file diff --git a/src/localization/locales/hu.json b/src/localization/locales/hu.json index ae294d96..7d3714ba 100644 --- a/src/localization/locales/hu.json +++ b/src/localization/locales/hu.json @@ -35,11 +35,6 @@ "VOTPremiere": "Fordítás előtt várja meg, amíg a premier véget ér", "VOTVideoIsTooLong": "A videó túl hosszú", "VOTNoVideoIDFound": "Nem található video ID", - "VOTFailedInitDB": "Nem sikerült inicializálni az adatbázist", - "VOTDBNeedUpdate": "Az adatbázis frissítésre szorul, kérjük, töltse be újra az oldalt", - "VOTDisabledForDBUpdating": "A VOT le van tiltva az adatbázis frissítésekor fellépő hiba miatt. Zárja be az összes megnyitott lapot a {0} gombbal, majd próbálja újra", - "VOTFailedWriteToDB": "Az adatok nem írhatók be az adatbázisba", - "VOTFailedReadFromDB": "Az adatokat nem sikerült lekérni az adatbázisból", "VOTSubtitles": "Feliratok", "VOTSubtitlesDisabled": "Mozgáskorlátozottak", "VOTSubtitlesMaxLength": "Feliratok maximális hossza", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Adja Meg Az Udemy Hozzáférési Tokent", "VOTUdemyData": "Udemy Adatok", "streamNoConnectionToServer": "Nincs kapcsolat a szerverrel", - "VOTCloudflareDoesntSupportStreams": "A szkript Cloudflare verziója nem támogatja a stream fordítást", "searchField": "Keresés...", "VOTTranslateAPIErrors": "Hibák lefordítása az API - ból", "VOTTranslationService": "Fordítási Szolgáltatás", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Adja meg a proxy munkavállaló címét", "VOTM3u8ProxyHost": "Írja be az m3u8 proxy munkás címét", "proxySettings": "Proxy Beállítások" -} +} \ No newline at end of file diff --git a/src/localization/locales/hy.json b/src/localization/locales/hy.json index 3f1f6fae..e0523d79 100644 --- a/src/localization/locales/hy.json +++ b/src/localization/locales/hy.json @@ -35,11 +35,6 @@ "VOTPremiere": "Թարգմանելուց առաջ սպասեք պրեմիերայի ավարտին", "VOTVideoIsTooLong": "Տեսանյութը չափազանց երկար է", "VOTNoVideoIDFound": "Տեսանյութի ID չի գտնվել", - "VOTFailedInitDB": "Չհաջողվեց նախաստորագրել տվյալների բազան", - "VOTDBNeedUpdate": "Տվյալների բազան թարմացման կարիք ունի, խնդրում ենք վերաբեռնել էջը", - "VOTDisabledForDBUpdating": "VOT-ն անջատված է տվյալների բազայի թարմացման սխալի պատճառով: Փակեք բոլոր բաց ներդիրները {0} - ով և նորից փորձեք", - "VOTFailedWriteToDB": "Տվյալները հնարավոր չէ գրել տվյալների բազայում", - "VOTFailedReadFromDB": "Տվյալները հնարավոր չէ հանել տվյալների բազայից", "VOTSubtitles": "Ենթագրեր", "VOTSubtitlesDisabled": "Անաշխատունակ", "VOTSubtitlesMaxLength": "Ենթագրերի առավելագույն երկարությունը", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Մուտքագրեք Udemy մուտքի նշանը", "VOTUdemyData": "Udemy-Ի Տվյալները", "streamNoConnectionToServer": "Սերվերի միացում չկա", - "VOTCloudflareDoesntSupportStreams": "Cloudflare սցենարի տարբերակը չի աջակցում հոսքային հոսքին", "searchField": "Որոնում..", "VOTTranslateAPIErrors": "API-ից սխալների փոխանցում", "VOTTranslationService": "Գրավոր թարգմանության ծառայություն", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Մուտքագրեք վստահված սերվերի աշխատանքային հասցեն", "VOTM3u8ProxyHost": "Մուտքագրեք աշխատանքային m3u8 վստահված անձի հասցեն", "proxySettings": "Վստահված սերվերի կարգավորումներ" -} +} \ No newline at end of file diff --git a/src/localization/locales/id.json b/src/localization/locales/id.json index 25328de7..4e24bbc1 100644 --- a/src/localization/locales/id.json +++ b/src/localization/locales/id.json @@ -35,11 +35,6 @@ "VOTPremiere": "Tunggu hingga premiere selesai sebelum menerjemahkan", "VOTVideoIsTooLong": "Video terlalu panjang", "VOTNoVideoIDFound": "Tidak ditemukan ID video", - "VOTFailedInitDB": "Gagal menginisialisasi basis data", - "VOTDBNeedUpdate": "Basis data membutuhkan pembaruan, silakan segarkan halaman", - "VOTDisabledForDBUpdating": "VOT dinonaktifkan karena kesalahan saat pembaruan basis data. Tutup semua tab terbuka dengan {0} dan coba lagi", - "VOTFailedWriteToDB": "Gagal menulis data ke basis data", - "VOTFailedReadFromDB": "Gagal membaca data dari basis data", "VOTSubtitles": "Sub judul", "VOTSubtitlesDisabled": "Dinonaktifkan", "VOTSubtitlesMaxLength": "Panjang maksimum sub judul", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Masukkan Token Akses Udemy", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Tidak ada koneksi ke server", - "VOTCloudflareDoesntSupportStreams": "Skrip versi Cloudflare tidak mendukung terjemahan aliran", "searchField": "Cari...", "VOTTranslateAPIErrors": "Terjemahkan kesalahan dari API", "VOTTranslationService": "Layanan Penerjemahan", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Masukkan alamat pekerja proxy", "VOTM3u8ProxyHost": "Masukkan alamat pekerja proksi m3u8", "proxySettings": "Pengaturan Proksi" -} +} \ No newline at end of file diff --git a/src/localization/locales/it.json b/src/localization/locales/it.json index d66b0878..9bacff86 100644 --- a/src/localization/locales/it.json +++ b/src/localization/locales/it.json @@ -35,11 +35,6 @@ "VOTPremiere": "Attendere la fine della premiere prima di tradurre", "VOTVideoIsTooLong": "Il video è troppo lungo", "VOTNoVideoIDFound": "Nessun ID video trovato", - "VOTFailedInitDB": "Inizializzazione del database non riuscita", - "VOTDBNeedUpdate": "Il database ha bisogno di un aggiornamento, si prega di ricaricare la pagina", - "VOTDisabledForDBUpdating": "VOT è disabilitato a causa di un errore durante l'aggiornamento del database. Chiudere tutte le schede aperte con {0} e riprovare", - "VOTFailedWriteToDB": "Impossibile scrivere i dati nel database", - "VOTFailedReadFromDB": "Impossibile recuperare i dati dal database", "VOTSubtitles": "Sottotitolo", "VOTSubtitlesDisabled": "Disabilita", "VOTSubtitlesMaxLength": "Sottotitoli lunghezza massima", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Inserisci il token di accesso Udemy", "VOTUdemyData": "Dati Udemy", "streamNoConnectionToServer": "Non c'è connessione al server", - "VOTCloudflareDoesntSupportStreams": "La versione Cloudflare dello script non supporta la traduzione del flusso", "searchField": "Ricerca...", "VOTTranslateAPIErrors": "Tradurre gli errori dall'API", "VOTTranslationService": "Servizio di traduzione", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Immettere l'indirizzo del lavoratore proxy", "VOTM3u8ProxyHost": "Immettere l'indirizzo del proxy worker m3u8", "proxySettings": "Impostazioni proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/ja.json b/src/localization/locales/ja.json index 5e74865c..1564ac4a 100644 --- a/src/localization/locales/ja.json +++ b/src/localization/locales/ja.json @@ -35,11 +35,6 @@ "VOTPremiere": "プレミアが終わるまで待ってから翻訳してください", "VOTVideoIsTooLong": "動画が長すぎます", "VOTNoVideoIDFound": "動画IDが見つかりませんでした", - "VOTFailedInitDB": "データベースの初期化に失敗しました", - "VOTDBNeedUpdate": "データベースを更新する必要があります。ページを再読み込みしてください。", - "VOTDisabledForDBUpdating": "データベース更新時のエラーのため、VOTは無効になっています。{0} を開いているすべてのタブを閉じて、もう一度お試しください。", - "VOTFailedWriteToDB": "データベースにデータを書き込めませんでした。", - "VOTFailedReadFromDB": "データベースからデータを取得できませんでした。", "VOTSubtitles": "字幕", "VOTSubtitlesDisabled": "無効", "VOTSubtitlesMaxLength": "字幕の最大長", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemyアクセストークンを入力します", "VOTUdemyData": "Udemyデータ", "streamNoConnectionToServer": "サーバーへの接続がありません", - "VOTCloudflareDoesntSupportStreams": "Cloudflareバージョンのスクリプトでは、ストリーム翻訳はサポートされていません", "searchField": "検索。..", "VOTTranslateAPIErrors": "APIからのエラーの翻訳", "VOTTranslationService": "翻訳サービス", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "プロキシワーカーアドレスを入力します", "VOTM3u8ProxyHost": "M3u8プロキシワーカーのアドレスを入力します", "proxySettings": "プロキシ設定" -} +} \ No newline at end of file diff --git a/src/localization/locales/jv.json b/src/localization/locales/jv.json index d220ea61..63a3778b 100644 --- a/src/localization/locales/jv.json +++ b/src/localization/locales/jv.json @@ -35,11 +35,6 @@ "VOTPremiere": "Ditunggu infonya dulu dulu", "VOTVideoIsTooLong": "Videonya panjang banget", "VOTNoVideoIDFound": "Ora ana ID video sing ditemokake", - "VOTFailedInitDB": "Gagal kanggo miwiti database", - "VOTDBNeedUpdate": "Basis data butuh nganyari, monggo diisi ulang kaca", - "VOTDisabledForDBUpdating": "VOT dipatèni amarga ana kesalahan nalika nganyari Basis Data. Tutup kabeh tab mbukak karo {0} lan nyoba maneh", - "VOTFailedWriteToDB": "Data ora bisa ditulis ing basis data", - "VOTFailedReadFromDB": "Data ora bisa dijupuk saka basis data", "VOTSubtitles": "Subtitle", "VOTSubtitlesDisabled": "Cacat", "VOTSubtitlesMaxLength": "Subtitle dawa maksimal", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Masuk Token Akses Udemy", "VOTUdemyData": "Data Udemy", "streamNoConnectionToServer": "Ora ana sambungan menyang server", - "VOTCloudflareDoesntSupportStreams": "Versi Cloudflare saka naskah ora ndhukung terjemahan aliran", "searchField": "Nggolèki...", "VOTTranslateAPIErrors": "Translate kasalahan SAKA API", "VOTTranslationService": "Layanan Terjemahan", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Ketik alamat buruh proxy", "VOTM3u8ProxyHost": "Pilih alamat m3u8 pekerja proxy", "proxySettings": "Setelan Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/kk.json b/src/localization/locales/kk.json index fa488a5d..13bea6e5 100644 --- a/src/localization/locales/kk.json +++ b/src/localization/locales/kk.json @@ -35,11 +35,6 @@ "VOTPremiere": "Аударманы көруден бұрын премьера аяқталуын күту керек", "VOTVideoIsTooLong": "Бейне тым ұзын", "VOTNoVideoIDFound": "Бейненің ID-сі табылмады", - "VOTFailedInitDB": "Деректер базасын іске қосу сәтсіз аяқталды", - "VOTDBNeedUpdate": "Деректер базасын жаңартуды қажет, таңдауларды қайта іске қосыңыз", - "VOTDisabledForDBUpdating": "Деректер базасын жаңарту кезінде VOT өшірілді. {0} сайтындағы барлық терезелерді жабыңыз және қайтадан көріңіз", - "VOTFailedWriteToDB": "Деректер базасына жазуге сәтсіз аяқталды", - "VOTFailedReadFromDB": "Деректер базасынан деректерді оқуға сәтсіз аяқталды", "VOTSubtitles": "Субтитрлер", "VOTSubtitlesDisabled": "Өшіру", "VOTSubtitlesMaxLength": "Субтитрдердің максималды ұзындығы", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy кіру таңбалауышын енгізіңіз", "VOTUdemyData": "Udemy Деректері", "streamNoConnectionToServer": "Серверге қосылу жоқ", - "VOTCloudflareDoesntSupportStreams": "Cloudflare сценарийінің нұсқасы ағынды қолдамайды", "searchField": "Іздеу...", "VOTTranslateAPIErrors": "API-ден қателерді аудару", "VOTTranslationService": "Жазбаша аударма қызметі", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Прокси-сервердің жұмыс мекенжайын енгізіңіз", "VOTM3u8ProxyHost": "M3u8 жұмыс прокси мекенжайын енгізіңіз", "proxySettings": "Прокси параметрлері" -} +} \ No newline at end of file diff --git a/src/localization/locales/km.json b/src/localization/locales/km.json index 5d191156..dcde62e9 100644 --- a/src/localization/locales/km.json +++ b/src/localization/locales/km.json @@ -35,11 +35,6 @@ "VOTPremiere": "រង់ចាំសម្រាប់ការបញ្ចាំងដើម្បីបញ្ចប់មុនពេលបកប្រែ", "VOTVideoIsTooLong": "វីដេអូយូរពេក", "VOTNoVideoIDFound": "រកមិនឃើញលេខសម្គាល់វីដេអូ", - "VOTFailedInitDB": "បានបរាជ័យក្នុងការចាប់ផ្ដើមមូលដ្ឋានទិន្នន័យ", - "VOTDBNeedUpdate": "មូលដ្ឋានទិន្នន័យនេះត្រូវការធ្វើឱ្យទាន់សម័យ,សូមផ្ទុកទំព័រឡើងវិញ", - "VOTDisabledForDBUpdating": "ការបោះឆ្នោតត្រូវបានបិទដោយសារតែកំហុសមួយនៅពេលធ្វើបច្ចុប្បន្នភាពមូលដ្ឋានទិន្នន័យ. បិទផ្ទាំងបើកទាំងអស់ជាមួយ{0}ហើយព្យាយាមម្តងទៀត", - "VOTFailedWriteToDB": "មិនអាចសរសេរទិន្នន័យទៅមូលដ្ឋានទិន្នន័យ", - "VOTFailedReadFromDB": "មិនអាចយកទិន្នន័យពីមូលដ្ឋានទិន្នន័យ", "VOTSubtitles": "ចំណងជើងរង", "VOTSubtitlesDisabled": "មិនអនុញ្ញាត", "VOTSubtitlesMaxLength": "ចំណងជើងរងប្រវែងអតិបរមា", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "បញ្ចូលសញ្ញាសម្ងាត់ចូលដំណើរការ Udemy", "VOTUdemyData": "ទិន្នន័យ Udemy", "streamNoConnectionToServer": "មិនមានការតភ្ជាប់ទៅម៉ាស៊ីនបម្រើទេ", - "VOTCloudflareDoesntSupportStreams": "កំណែ Cloudflare នៃស្គ្រីបមិនគាំទ្រការបកប្រែស្ទ្រីម", "searchField": "ស្វែងរក...", "VOTTranslateAPIErrors": "បកប្រែកំហុសពី API", "VOTTranslationService": "សេវាកម្មបកប្រែ", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "បញ្ចូលអាសយដ្ឋានកម្មករប្រូកស៊ី", "VOTM3u8ProxyHost": "បញ្ចូលអាសយដ្ឋានរបស់កម្មករប្រូកស៊ី m3u8", "proxySettings": "ការកំណត់ប្រូកស៊ី" -} +} \ No newline at end of file diff --git a/src/localization/locales/kn.json b/src/localization/locales/kn.json index 6e0426a3..21cf2429 100644 --- a/src/localization/locales/kn.json +++ b/src/localization/locales/kn.json @@ -35,11 +35,6 @@ "VOTPremiere": "ಅನುವಾದಿಸುವ ಮೊದಲು ಪ್ರೀಮಿಯರ್ ಕೊನೆಗೊಳ್ಳುವವರೆಗೆ ಕಾಯಿರಿ", "VOTVideoIsTooLong": "ವೀಡಿಯೊ ತುಂಬಾ ಉದ್ದವಾಗಿದೆ", "VOTNoVideoIDFound": "ವೀಡಿಯೊ ID ಕಂಡುಬಂದಿಲ್ಲ", - "VOTFailedInitDB": "ಡೇಟಾಬೇಸ್ ಆರಂಭಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ", - "VOTDBNeedUpdate": "ಡೇಟಾಬೇಸ್ಗೆ ನವೀಕರಣದ ಅಗತ್ಯವಿದೆ, ದಯವಿಟ್ಟು ಪುಟವನ್ನು ಮರುಲೋಡ್ ಮಾಡಿ", - "VOTDisabledForDBUpdating": "ಡೇಟಾಬೇಸ್ ಅನ್ನು ನವೀಕರಿಸುವಾಗ ದೋಷದಿಂದಾಗಿ VOT ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ತೆರೆದ ಎಲ್ಲಾ ಟ್ಯಾಬ್ಗಳನ್ನು {0} ನೊಂದಿಗೆ ಮುಚ್ಚಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", - "VOTFailedWriteToDB": "ಡೇಟಾವನ್ನು ಡೇಟಾಬೇಸ್ಗೆ ಬರೆಯಲಾಗಲಿಲ್ಲ", - "VOTFailedReadFromDB": "ಡೇಟಾಬೇಸ್ನಿಂದ ದತ್ತಾಂಶವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ", "VOTSubtitles": "ಉಪಶೀರ್ಷಿಕೆಗಳು", "VOTSubtitlesDisabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ", "VOTSubtitlesMaxLength": "ಉಪಶೀರ್ಷಿಕೆಗಳು ಗರಿಷ್ಠ ಉದ್ದ", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy ಪ್ರವೇಶ ಟೋಕನ್ ಅನ್ನು ನಮೂದಿಸಿ", "VOTUdemyData": "Udemy ಡೇಟಾ", "streamNoConnectionToServer": "ಸರ್ವರ್ಗೆ ಸಂಪರ್ಕವಿಲ್ಲ", - "VOTCloudflareDoesntSupportStreams": "ಸ್ಕ್ರಿಪ್ಟ್ Cloudflare ಆವೃತ್ತಿ ಸ್ಟ್ರೀಮ್ ಅನುವಾದ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ", "searchField": "ಹುಡುಕಿ...", "VOTTranslateAPIErrors": "API ನಿಂದ ದೋಷಗಳನ್ನು ಭಾಷಾಂತರಿಸಿ", "VOTTranslationService": "ಅನುವಾದ ಸೇವೆ", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "ಪ್ರಾಕ್ಸಿ ಕಾರ್ಮಿಕರ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", "VOTM3u8ProxyHost": "M3u8 ಪ್ರಾಕ್ಸಿ ಕೆಲಸಗಾರನ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", "proxySettings": "ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳು" -} +} \ No newline at end of file diff --git a/src/localization/locales/ko.json b/src/localization/locales/ko.json index 514246b0..3bce6105 100644 --- a/src/localization/locales/ko.json +++ b/src/localization/locales/ko.json @@ -35,11 +35,6 @@ "VOTPremiere": "번역하기 전에 프리미어가 끝날 때까지 기다리십시오", "VOTVideoIsTooLong": "비디오가 너무 깁니다", "VOTNoVideoIDFound": "비디오 ID를 찾을 수 없습니다", - "VOTFailedInitDB": "데이터베이스 초기화 실패", - "VOTDBNeedUpdate": "데이터베이스가 업데이트가 필요합니다. 페이지를 새로고침하십시오", - "VOTDisabledForDBUpdating": "데이터베이스 업데이트 오류로 인해 VOT가 비활성화되었습니다. {0}와 열려 있는 모든 탭을 닫고 다시 시도하십시오", - "VOTFailedWriteToDB": "데이터베이스에 데이터를 쓸 수 없습니다", - "VOTFailedReadFromDB": "데이터베이스에서 데이터를 읽을 수 없습니다", "VOTSubtitles": "자막", "VOTSubtitlesDisabled": "장애가 있는", "VOTSubtitlesMaxLength": "자막 최대 길이", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "액세스 토큰 입력", "VOTUdemyData": "데이터", "streamNoConnectionToServer": "서버에 연결이 없습니다", - "VOTCloudflareDoesntSupportStreams": "이 스크립트의 클라우드 플레어 버전은 스트림 번역을 지원하지 않습니다", "searchField": "검색...", "VOTTranslateAPIErrors": "번역 오류", "VOTTranslationService": "번역 서비스", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "프록시 작업자 주소를 입력합니다", "VOTM3u8ProxyHost": "프록시 작업자의 주소를 입력합니다", "proxySettings": "프록시 설정" -} +} \ No newline at end of file diff --git a/src/localization/locales/lo.json b/src/localization/locales/lo.json index 9455784d..ec27d1bb 100644 --- a/src/localization/locales/lo.json +++ b/src/localization/locales/lo.json @@ -35,11 +35,6 @@ "VOTPremiere": "ລໍຖ້າໃຫ້ການສາຍຮອບປະຖົມມະທັດສິ້ນສຸດລົງກ່ອນການແປ", "VOTVideoIsTooLong": "ວິດີໂອຍາວເກີນໄປ", "VOTNoVideoIDFound": "ບໍ່ພົບ ID ວິດີໂອ", - "VOTFailedInitDB": "ລົ້ມເຫລວໃນການເລີ່ມຕົ້ນຖານຂໍ້ມູນ", - "VOTDBNeedUpdate": "ຖານຂໍ້ມູນທີ່ຕ້ອງການປັບປຸງໃຫ້ທັນ,ກະລຸນາໂຫຼດຫນ້າ", - "VOTDisabledForDBUpdating": "VOT ຖືກປິດໃຊ້ງານຍ້ອນຂໍ້ຜິດພາດເມື່ອອັບເດດຖານຂໍ້ມູນ. ປິດແທັບເປີດທັງໝົດດ້ວຍ{0}ແລະລອງໃໝ່ອີກຄັ້ງ", - "VOTFailedWriteToDB": "ຂໍ້ມູນບໍ່ສາມາດໄດ້ຮັບການລາຍລັກອັກສອນກັບຖານຂໍ້ມູນ", - "VOTFailedReadFromDB": "ຂໍ້ມູນບໍ່ສາມາດໄດ້ຮັບການດຶງມາຈາກຖານຂໍ້ມູນ", "VOTSubtitles": "ຄໍາບັນຍາຍ", "VOTSubtitlesDisabled": "ພິການ", "VOTSubtitlesMaxLength": "ຄໍາບັນຍາຍຄວາມຍາວສູງສຸດ", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "ກະລຸນາໃສ່ Token ການເຂົ້າເຖິງ Udemy", "VOTUdemyData": "ຂໍ້ມູນ Udemy", "streamNoConnectionToServer": "ບໍ່ມີການເຊື່ອມຕໍ່ກັບ server", - "VOTCloudflareDoesntSupportStreams": "ສະບັບ Cloudflare ຂອງ script ບໍ່ໄດ້ສະຫນັບສະຫນູນການແປພາສານ້ໍາ", "searchField": "ຄົ້ນຫາ...", "VOTTranslateAPIErrors": "ແປຂໍ້ຜິດພາດຈາກ API", "VOTTranslationService": "ການບໍລິການແປພາສາ", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "ກະລຸນາໃສ່ທີ່ຢູ່ພະນັກງານຕົວແທນ", "VOTM3u8ProxyHost": "ໃສ່ທີ່ຢູ່ຂອງພະນັກງານຕົວແທນ m3u8", "proxySettings": "ການຕັ້ງຄ່າຕົວແທນ" -} +} \ No newline at end of file diff --git a/src/localization/locales/mk.json b/src/localization/locales/mk.json index 5ece4c67..15dc39af 100644 --- a/src/localization/locales/mk.json +++ b/src/localization/locales/mk.json @@ -35,11 +35,6 @@ "VOTPremiere": "Почекајте премиерата да заврши пред да преведете", "VOTVideoIsTooLong": "Видеото е предолго", "VOTNoVideoIDFound": "Не е пронајдено ВИДЕО", - "VOTFailedInitDB": "Не успеа да ја иницијализира базата на податоци", - "VOTDBNeedUpdate": "На базата на податоци и треба ажурирање, ве молиме повторно вчитајте ја страницата", - "VOTDisabledForDBUpdating": "ГЛАСАЊЕТО е оневозможено поради грешка при ажурирање на Базата на Податоци. Затворете ги сите отворени јазичиња со {0} и обидете се повторно", - "VOTFailedWriteToDB": "Податоците не можат да бидат напишани во базата на податоци", - "VOTFailedReadFromDB": "Податоците не можат да се добијат од базата на податоци", "VOTSubtitles": "Преводи", "VOTSubtitlesDisabled": "Оневозможено", "VOTSubtitlesMaxLength": "Преводи максимална должина", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Внесете Удеми Пристап Токен", "VOTUdemyData": "Удеми Податоци", "streamNoConnectionToServer": "Нема врска со серверот", - "VOTCloudflareDoesntSupportStreams": "Верзијата За Облак На сценариото не поддржува превод на поток", "searchField": "Барај...", "VOTTranslateAPIErrors": "Преведи грешки ОД АПИ", "VOTTranslationService": "Преведувачка Услуга", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Внесете ја адресата на прокси-работникот", "VOTM3u8ProxyHost": "Внесете ја адресата на прокси-работникот м3у8", "proxySettings": "Поставки За Прокси" -} +} \ No newline at end of file diff --git a/src/localization/locales/ml.json b/src/localization/locales/ml.json index f0b48d3c..5a498821 100644 --- a/src/localization/locales/ml.json +++ b/src/localization/locales/ml.json @@ -35,11 +35,6 @@ "VOTPremiere": "വിവർത്തനം ചെയ്യുന്നതിന് മുമ്പ് പ്രീമിയർ അവസാനിക്കുന്നതുവരെ കാത്തിരിക്കുക", "VOTVideoIsTooLong": "വീഡിയോ വളരെ ദൈർഘ്യമേറിയതാണ്", "VOTNoVideoIDFound": "വീഡിയോ ഐഡി ലഭ്യമല്ല", - "VOTFailedInitDB": "ഡാറ്റാബേസ് ആരംഭിക്കുന്നതില് പരാജയം", - "VOTDBNeedUpdate": "ഡാറ്റാബേസിന് ഒരു അപ്ഡേറ്റ് ആവശ്യമാണ്, ദയവായി പേജ് വീണ്ടും ലോഡ് ചെയ്യുക", - "VOTDisabledForDBUpdating": "ഡാറ്റാബേസ് അപ്ഡേറ്റ് ചെയ്യുമ്പോൾ ഒരു പിശക് കാരണം വോട്ട് അപ്രാപ്തമാക്കിയിരിക്കുന്നു. തുറന്ന എല്ലാ ടാബുകളും {0} ഉപയോഗിച്ച് അടച്ച് വീണ്ടും ശ്രമിക്കുക", - "VOTFailedWriteToDB": "ഡാറ്റാ ഡാറ്റാബേസിലേക്ക് എഴുതുവാന് സാധ്യമല്ല", - "VOTFailedReadFromDB": "ഡാറ്റാബേസില് നിന്നും ഡാറ്റ വീണ്ടെടുക്കുവാന് സാധ്യമല്ല", "VOTSubtitles": "സബ്ടൈറ്റിലുകൾ", "VOTSubtitlesDisabled": "Disabled", "VOTSubtitlesMaxLength": "സബ്ടൈറ്റിലുകൾ പരമാവധി നീളം", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "ഉഡെമി ആക്സസ് ടോക്കൺ നൽകുക", "VOTUdemyData": "ഉഡെമി ഡാറ്റ", "streamNoConnectionToServer": "സെർവറുമായി ബന്ധമില്ല", - "VOTCloudflareDoesntSupportStreams": "സ്ക്രിപ്റ്റിന്റെ ക്ലൌഡ്ഫ്ലെയർ പതിപ്പ് സ്ട്രീം വിവർത്തനത്തെ പിന്തുണയ്ക്കുന്നില്ല", "searchField": "തിരയൂ...", "VOTTranslateAPIErrors": "എപിഐയിൽ നിന്ന് പിശകുകൾ വിവർത്തനം ചെയ്യുക", "VOTTranslationService": "വിവർത്തന സേവനം", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "പ്രോക്സി തൊഴിലാളിയുടെ വിലാസം നല്കുക", "VOTM3u8ProxyHost": "എം 3 യു 8 പ്രോക്സി തൊഴിലാളിയുടെ വിലാസം നൽകുക", "proxySettings": "പ്രോക്സി ക്രമീകരണങ്ങൾ" -} +} \ No newline at end of file diff --git a/src/localization/locales/mn.json b/src/localization/locales/mn.json index ae7012d5..151e217a 100644 --- a/src/localization/locales/mn.json +++ b/src/localization/locales/mn.json @@ -35,11 +35,6 @@ "VOTPremiere": "Орчуулахаасаа өмнө киноны нээлт дуусахыг хүлээнэ үү", "VOTVideoIsTooLong": "Видео хэтэрхий урт байна", "VOTNoVideoIDFound": "Видео ID олдсонгүй", - "VOTFailedInitDB": "Мэдээллийн санг эхлүүлж чадаагүй", - "VOTDBNeedUpdate": "Мэдээллийн сан нь Шинэчлэлт хэрэгтэй, Хуудсыг дахин ачаална уу", - "VOTDisabledForDBUpdating": "Vot улмаас мэдээллийн санг шинэчлэх үед алдаа идэвхгүй байна. {0} бүхий бүх нээлттэй табуудыг хааж, дахин оролдоно уу", - "VOTFailedWriteToDB": "Мэдээллийн санд мэдээлэл бичиж чадсангүй", - "VOTFailedReadFromDB": "Мэдээллийн сангаас мэдээлэл авах боломжгүй", "VOTSubtitles": "Хадмалтай", "VOTSubtitlesDisabled": "Хөгжлийн бэрхшээлтэй", "VOTSubtitlesMaxLength": "Хадмалтай Макс урт", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy Хандалтын Токен Оруулна Уу", "VOTUdemyData": "Udemy Мэдээлэл", "streamNoConnectionToServer": "Сервертэй холбогдох боломжгүй", - "VOTCloudflareDoesntSupportStreams": "Скриптийн Cloudflare хувилбар нь урсгалын орчуулгыг дэмждэггүй", "searchField": "Хайх...", "VOTTranslateAPIErrors": "API - аас алдаа орчуулах", "VOTTranslationService": "Орчуулгын Үйлчилгээ", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Прокси ажилчдын хаягийг оруулна уу", "VOTM3u8ProxyHost": "M3u8 прокси ажилтны хаягийг оруулна уу", "proxySettings": "Прокси Тохиргоо" -} +} \ No newline at end of file diff --git a/src/localization/locales/ms.json b/src/localization/locales/ms.json index dedbfe2b..c110b767 100644 --- a/src/localization/locales/ms.json +++ b/src/localization/locales/ms.json @@ -35,11 +35,6 @@ "VOTPremiere": "Tunggu sehingga premiere tamat sebelum menterjemahkannya", "VOTVideoIsTooLong": "Video terlalu panjang", "VOTNoVideoIDFound": "Tidak ditemui ID video", - "VOTFailedInitDB": "Gagal menginisialisasi pangkalan data", - "VOTDBNeedUpdate": "Pangkalan data memerlukan kemas kini, sila muatkan semula laman ini", - "VOTDisabledForDBUpdating": "VOT dimatikan kerana ralat semasa mengemaskini pangkalan data. Sila tutup semua tab yang dibuka di {0} dan cuba sekali lagi", - "VOTFailedWriteToDB": "Gagal menulis data ke dalam pangkalan data", - "VOTFailedReadFromDB": "Gagal membaca data dari pangkalan data", "VOTSubtitles": "Sari kata", "VOTSubtitlesDisabled": "Dimatikan", "VOTSubtitlesMaxLength": "Panjang maksimum sari kata", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Masukkan Token Akses Udemy", "VOTUdemyData": "Data Udemy", "streamNoConnectionToServer": "Tiada sambungan ke pelayan", - "VOTCloudflareDoesntSupportStreams": "Versi Cloudflare Skrip tidak menyokong terjemahan aliran", "searchField": "Cari...", "VOTTranslateAPIErrors": "Terjemahkan ralat dari API", "VOTTranslationService": "Perkhidmatan Terjemahan", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Masukkan alamat pekerja proksi", "VOTM3u8ProxyHost": "Masukkan alamat pekerja proksi m3u8", "proxySettings": "Tetapan Proksi" -} +} \ No newline at end of file diff --git a/src/localization/locales/mt.json b/src/localization/locales/mt.json index b38ff0a6..5f9de5bc 100644 --- a/src/localization/locales/mt.json +++ b/src/localization/locales/mt.json @@ -35,11 +35,6 @@ "VOTPremiere": "Stenna li l premiere jintemm qabel ma tittraduċi", "VOTVideoIsTooLong": "Video huwa twil wisq", "VOTNoVideoIDFound": "L-EBDA id tal-vidjo ma nstab", - "VOTFailedInitDB": "Naqas milli jinizjalizza database", - "VOTDBNeedUpdate": "Id-database teħtieġ aġġornament, jekk jogħġbok erġa'għabbi l-paġna", - "VOTDisabledForDBUpdating": "VOT huwa diżattivat minħabba żball meta taġġorna d-database. Agħlaq it-tabs miftuħa kollha b' {0} u erġa'pprova", - "VOTFailedWriteToDB": "Id-dejta ma setgħetx tinkiteb fid - database", - "VOTFailedReadFromDB": "Id dejta ma setgħetx tinġabar mid database", "VOTSubtitles": "Sottotitoli", "VOTSubtitlesDisabled": "Diżattivat", "VOTSubtitlesMaxLength": "Sottotitoli tul massimu", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Daħħal It-Token Tal-Aċċess Udemy", "VOTUdemyData": "Dejta Udemy", "streamNoConnectionToServer": "M'hemm l ebda konnessjoni mas server", - "VOTCloudflareDoesntSupportStreams": "Il verżjoni Cloudflare tal iskrittura ma tappoġġjax traduzzjoni stream", "searchField": "Fittex...", "VOTTranslateAPIErrors": "Ittraduċi żbalji mill-API", "VOTTranslationService": "Servizz Ta'traduzzjoni", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Daħħal l indirizz tal ħaddiem tal prokura", "VOTM3u8ProxyHost": "Daħħal l indirizz tal ħaddiem tal prokura m3u8", "proxySettings": "Settings Tal-Prokura" -} +} \ No newline at end of file diff --git a/src/localization/locales/my.json b/src/localization/locales/my.json index 9a89e299..eae33f5e 100644 --- a/src/localization/locales/my.json +++ b/src/localization/locales/my.json @@ -35,11 +35,6 @@ "VOTPremiere": "ဘာသာပြန်မပေးခင်ပွဲဦးထွက်ကိုစောင့်ပါ။", "VOTVideoIsTooLong": "ဗီဒီယိုကရှည်လွန်းတယ်။", "VOTNoVideoIDFound": "ဗီဒီယိုအမှတ်အသားမတွေ့ရ", - "VOTFailedInitDB": "ဒေတာဘေ့စ်ကိုအစပြုရန်ပျက်ကွက်", - "VOTDBNeedUpdate": "ဒေတာဘေ့စ်ကိုမွမ်းမံရန်လိုအပ်သည်၊ကျေးဇူးပြု၍စာမျက်နှာကိုပြန်လည်တင်ပါ။", - "VOTDisabledForDBUpdating": "ဒေတာဘေ့စ်ကိုမွမ်းမံနေစဉ်အမှားတစ်ခုကြောင့် VOT ကိုပိတ်ထားသည်။ {0}ဖြင့်ဖွင့်ထားသော tabs အားလုံးကိုပိတ်ပြီးထပ်မံကြိုးစားပါ", - "VOTFailedWriteToDB": "ဒေတာများကိုဒေတာဘေ့စ်သို့ရေးသား၍မရပါ။", - "VOTFailedReadFromDB": "ဒေတာဘေ့စ်မှဒေတာများကိုရယူနိုင်ခြင်းမရှိပါ။", "VOTSubtitles": "စာတန်းထိုး", "VOTSubtitlesDisabled": "မသန်စွမ်း", "VOTSubtitlesMaxLength": "စာတန်းထိုး max length", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy Access Token ကိုထည့်သွင်းပါ", "VOTUdemyData": "Udemy ဒေတာ", "streamNoConnectionToServer": "ဆာဗာနှင့်ချိတ်ဆက်မှုမရှိပါ။", - "VOTCloudflareDoesntSupportStreams": "Cloudflare ဗားရှင်းသည် stream ဘာသာပြန်မှုကိုမထောက်ပံ့ပါ။", "searchField": "ရှာဖွေပါ။..", "VOTTranslateAPIErrors": "API မှအမှားများကိုဘာသာပြန်ပါ", "VOTTranslationService": "ဘာသာပြန်ဝန်ဆောင်မှု", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Proxy worker လိပ်စာကိုရိုက်ထည့်ပါ", "VOTM3u8ProxyHost": "M3u8 proxy worker၏လိပ်စာကိုရိုက်ထည့်ပါ", "proxySettings": "Proxy Setting များ" -} +} \ No newline at end of file diff --git a/src/localization/locales/ne.json b/src/localization/locales/ne.json index 9e2639f0..e6bdc429 100644 --- a/src/localization/locales/ne.json +++ b/src/localization/locales/ne.json @@ -35,11 +35,6 @@ "VOTPremiere": "अनुवाद गर्नु अघि प्रिमियर समाप्त हुने प्रतीक्षा गर्नुहोस्", "VOTVideoIsTooLong": "भिडियो धेरै लामो छ", "VOTNoVideoIDFound": "भिडियो आईडी फेला परेन", - "VOTFailedInitDB": "डाटाबेस सुरुआत गर्न असफल भयो", - "VOTDBNeedUpdate": "डाटाबेसलाई अद्यावधिक चाहिन्छ, कृपया पृष्ठ पुनः लोड गर्नुहोस्", - "VOTDisabledForDBUpdating": "डाटाबेस अपडेट गर्दा त्रुटिका कारण भोट अक्षम गरिएको छ । {0} सँग सबै खुला ट्याबहरू बन्द गर्नुहोस् र फेरि प्रयास गर्नुहोस्", - "VOTFailedWriteToDB": "डाटाबेसमा डाटा लेख्न सकिएन", - "VOTFailedReadFromDB": "डाटाबेसबाट डाटा पुनः प्राप्त गर्न सकिएन", "VOTSubtitles": "उपशीर्षकहरू", "VOTSubtitlesDisabled": "अक्षम पारिएको", "VOTSubtitlesMaxLength": "उपशीर्षक अधिकतम लम्बाइ", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "उडेमी पहुँच टोकन प्रविष्ट गर्नुहोस्", "VOTUdemyData": "उडेमी डाटा", "streamNoConnectionToServer": "सर्भरसँग कुनै सम्बन्ध छैन", - "VOTCloudflareDoesntSupportStreams": "स्क्रिप्टको क्लाउडफ्लेयर संस्करणले स्ट्रिम अनुवादलाई समर्थन गर्दैन", "searchField": "खोजी गर्नुहोस्।..", "VOTTranslateAPIErrors": "एपीआईबाट त्रुटिहरू अनुवाद गर्नुहोस्", "VOTTranslationService": "अनुवाद सेवा", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "प्रोक्सी कार्यकर्ताको ठेगाना प्रविष्ट गर्नुहोस्", "VOTM3u8ProxyHost": "M3u8 प्रोक्सी कार्यकर्ताको ठेगाना प्रविष्ट गर्नुहोस्", "proxySettings": "प्रोक्सी सेटिङ" -} +} \ No newline at end of file diff --git a/src/localization/locales/nl.json b/src/localization/locales/nl.json index 822baca2..eb8fa54c 100644 --- a/src/localization/locales/nl.json +++ b/src/localization/locales/nl.json @@ -35,11 +35,6 @@ "VOTPremiere": "Wacht tot de première is afgelopen voordat u vertaalt", "VOTVideoIsTooLong": "Video is te lang", "VOTNoVideoIDFound": "Geen video-ID gevonden", - "VOTFailedInitDB": "Initialiseren van database is mislukt", - "VOTDBNeedUpdate": "De database heeft een update nodig, laad de pagina opnieuw", - "VOTDisabledForDBUpdating": "VOT is uitgeschakeld vanwege een fout bij het bijwerken van de Database. Sluit alle geopende tabbladen met {0} en probeer het opnieuw", - "VOTFailedWriteToDB": "Gegevens konden niet naar de database worden geschreven", - "VOTFailedReadFromDB": "Gegevens konden niet worden opgehaald uit de database", "VOTSubtitles": "Ondertitels", "VOTSubtitlesDisabled": "Gehandicapten", "VOTSubtitlesMaxLength": "Ondertitels max lengte", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Enter Udemy Access Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Er is geen verbinding met de server", - "VOTCloudflareDoesntSupportStreams": "De Cloudflare-versie van het script ondersteunt geen streamvertaling", "searchField": "Zoeken...", "VOTTranslateAPIErrors": "Vertaal fouten uit de API", "VOTTranslationService": "vertaaldienst", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Voer het proxy worker-adres in", "VOTM3u8ProxyHost": "Voer het adres van de m3u8 proxy worker in", "proxySettings": "Proxy-Instellingen" -} +} \ No newline at end of file diff --git a/src/localization/locales/pa.json b/src/localization/locales/pa.json index 349fa431..dff3d073 100644 --- a/src/localization/locales/pa.json +++ b/src/localization/locales/pa.json @@ -35,11 +35,6 @@ "VOTPremiere": "ਅਨੁਵਾਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰੀਮੀਅਰ ਦੇ ਖ਼ਤਮ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰੋ", "VOTVideoIsTooLong": "ਵੀਡੀਓ ਬਹੁਤ ਲੰਮਾ ਹੈ", "VOTNoVideoIDFound": "ਵਿਡੀਓ ਆਈਡੀ ਨਹੀਂ ਮਿਲੀ", - "VOTFailedInitDB": "ਡਾਟਾਬੇਸ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਫੇਲ੍ਹ", - "VOTDBNeedUpdate": "ਡਾਟਾਬੇਸ ਨੂੰ ਇੱਕ ਅੱਪਡੇਟ ਦੀ ਲੋੜ ਹੈ, ਪੰਨਾ ਮੁੜ ਲੋਡ ਕਰੋ ਜੀ", - "VOTDisabledForDBUpdating": "ਡਾਟਾਬੇਸ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਵੇਲੇ ਇੱਕ ਗਲਤੀ ਦੇ ਕਾਰਨ ਵੋਟ ਅਸਮਰੱਥ ਹੈ. {0} ਨਾਲ ਸਭ ਖੁੱਲ੍ਹੀਆਂ ਟੈਬਾਂ ਬੰਦ ਕਰੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ", - "VOTFailedWriteToDB": "ਡਾਟਾ ਡਾਟਾਬੇਸ ਵਿੱਚ ਨਹੀਂ ਲਿਖਿਆ ਜਾ ਸਕਿਆ", - "VOTFailedReadFromDB": "ਡਾਟਾਬੇਸ ਤੋਂ ਡਾਟਾ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ", "VOTSubtitles": "ਉਪਸਿਰਲੇਖ", "VOTSubtitlesDisabled": "ਆਯੋਗ", "VOTSubtitlesMaxLength": "ਉਪਸਿਰਲੇਖ ਅਧਿਕਤਮ ਲੰਬਾਈ", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "ਉਡੇਮੀ ਐਕਸੈਸ ਟੋਕਨ ਦਰਜ ਕਰੋ", "VOTUdemyData": "ਉਡੇਮੀ ਡਾਟਾ", "streamNoConnectionToServer": "ਸਰਵਰ ਨਾਲ ਕੋਈ ਕੁਨੈਕਸ਼ਨ ਨਹੀਂ", - "VOTCloudflareDoesntSupportStreams": "ਸਕ੍ਰਿਪਟ ਦਾ ਕਲਾਉਡਫਲੇਅਰ ਵਰਜਨ ਸਟ੍ਰੀਮ ਅਨੁਵਾਦ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ", "searchField": "ਖੋਜ ਕਰੋ...", "VOTTranslateAPIErrors": "ਏਪੀਆਈ ਤੋਂ ਗਲਤੀਆਂ ਅਨੁਵਾਦ ਕਰੋ", "VOTTranslationService": "ਅਨੁਵਾਦ ਸੇਵਾ", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "ਪਰਾਕਸੀ ਵਰਕਰ ਐਡਰੈੱਸ ਦਿਓ", "VOTM3u8ProxyHost": "ਐਮ 3 ਯੂ 8 ਪ੍ਰੌਕਸੀ ਵਰਕਰ ਦਾ ਪਤਾ ਦਰਜ ਕਰੋ", "proxySettings": "ਪਰਾਕਸੀ ਸੈਟਿੰਗ" -} +} \ No newline at end of file diff --git a/src/localization/locales/pl.json b/src/localization/locales/pl.json index a1540309..d5eb2887 100644 --- a/src/localization/locales/pl.json +++ b/src/localization/locales/pl.json @@ -35,11 +35,6 @@ "VOTPremiere": "Poczekaj na zakończenie premiery przed tłumaczeniem", "VOTVideoIsTooLong": "Wideo jest za długie", "VOTNoVideoIDFound": "Nie znaleziono identyfikatora wideo", - "VOTFailedInitDB": "Nie udało się zainicjować bazy danych", - "VOTDBNeedUpdate": "Baza danych wymaga aktualizacji, przeładuj stronę", - "VOTDisabledForDBUpdating": "VOT jest wyłączony z powodu błędu podczas aktualizacji bazy danych. Zamknij wszystkie otwarte karty za pomocą {0} i spróbuj ponownie", - "VOTFailedWriteToDB": "Nie można zapisać danych do bazy danych", - "VOTFailedReadFromDB": "Nie można pobrać danych z bazy danych", "VOTSubtitles": "Napisy", "VOTSubtitlesDisabled": "Niepełnosprawni", "VOTSubtitlesMaxLength": "Napisy max długość", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Wprowadź Token Dostępu Udemy", "VOTUdemyData": "Dane Udemy", "streamNoConnectionToServer": "Nie ma połączenia z serwerem", - "VOTCloudflareDoesntSupportStreams": "Wersja skryptu Cloudflare nie obsługuje tłumaczenia strumieniowego", "searchField": "Szukaj...", "VOTTranslateAPIErrors": "Przetłumacz błędy z API", "VOTTranslationService": "Usługi Tłumaczeniowe", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Wprowadź adres pracownika proxy", "VOTM3u8ProxyHost": "Wprowadź adres pracownika proxy m3u8", "proxySettings": "Ustawienia Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/pt.json b/src/localization/locales/pt.json index 7a116961..0747380e 100644 --- a/src/localization/locales/pt.json +++ b/src/localization/locales/pt.json @@ -35,11 +35,6 @@ "VOTPremiere": "Aguarde a estreia terminar antes de traduzir", "VOTVideoIsTooLong": "O vídeo é muito longo", "VOTNoVideoIDFound": "Nenhum ID de vídeo encontrado", - "VOTFailedInitDB": "Falha ao inicializar o banco de dados", - "VOTDBNeedUpdate": "O banco de dados precisa ser atualizado. Por favor, recarregue a página", - "VOTDisabledForDBUpdating": "VOT está desativado devido a um erro ao atualizar o banco de dados. Feche todas as guias abertas em {0} e tente novamente", - "VOTFailedWriteToDB": "Falha ao gravar dados no banco de dados", - "VOTFailedReadFromDB": "Falha ao ler dados do banco de dados", "VOTSubtitles": "Legendas", "VOTSubtitlesDisabled": "Desativado", "VOTSubtitlesMaxLength": "Comprimento máximo das legendas", @@ -187,7 +182,6 @@ "enterUdemyAccessToken": "Insira O Token De Acesso Da Udemy", "VOTUdemyData": "Dados Udemy", "streamNoConnectionToServer": "Não há conexão com o servidor", - "VOTCloudflareDoesntSupportStreams": "A versão Cloudflare do script não oferece suporte à tradução de fluxo", "searchField": "Procura...", "VOTTranslateAPIErrors": "Traduzir erros da API", "VOTTranslationService": "Serviço De Tradução", @@ -196,4 +190,4 @@ "VOTProxyWorkerHost": "Insira o endereço do proxy worker", "VOTM3u8ProxyHost": "Insira o endereço do trabalhador proxy m3u8", "proxySettings": "Definições De Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/ro.json b/src/localization/locales/ro.json index a2a5fee7..4d378de3 100644 --- a/src/localization/locales/ro.json +++ b/src/localization/locales/ro.json @@ -35,11 +35,6 @@ "VOTPremiere": "Așteptați ca premiera să se încheie înainte de a traduce", "VOTVideoIsTooLong": "Videoclipul este prea lung", "VOTNoVideoIDFound": "Nu a fost găsit niciun ID video", - "VOTFailedInitDB": "Nu a reușit să inițializeze baza de date", - "VOTDBNeedUpdate": "Baza de date are nevoie de o actualizare, vă rugăm să reîncărcați pagina", - "VOTDisabledForDBUpdating": "VOT este dezactivat din cauza unei erori la actualizarea bazei de date. Închideți toate filele deschise cu {0} și încercați din nou", - "VOTFailedWriteToDB": "Datele nu au putut fi scrise în baza de date", - "VOTFailedReadFromDB": "Datele nu au putut fi preluate din Baza de date", "VOTSubtitles": "Subtitrari", "VOTSubtitlesDisabled": "Dezactivat", "VOTSubtitlesMaxLength": "Subtitrari lungime maxima", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Introduceți Jetonul De Acces Udemy", "VOTUdemyData": "Datele Udemy", "streamNoConnectionToServer": "Nu există nicio conexiune la server", - "VOTCloudflareDoesntSupportStreams": "Versiunea Cloudflare a scriptului nu acceptă traducerea fluxului", "searchField": "Căutare...", "VOTTranslateAPIErrors": "Traduceți erorile din API", "VOTTranslationService": "Servicii De Traducere", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Introduceți adresa lucrătorului proxy", "VOTM3u8ProxyHost": "Introduceți adresa lucrătorului proxy m3u8", "proxySettings": "Setări Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/ru.json b/src/localization/locales/ru.json index c9c34c64..d8541c7f 100644 --- a/src/localization/locales/ru.json +++ b/src/localization/locales/ru.json @@ -35,11 +35,6 @@ "VOTPremiere": "Дождитесь окончания премьеры перед переводом", "VOTVideoIsTooLong": "Видео слишком длинное", "VOTNoVideoIDFound": "Не найден идентификатор (ID) видео", - "VOTFailedInitDB": "Не удалось инициализовать базу данных", - "VOTDBNeedUpdate": "Базе данных нужно обновление, пожалуйста, перезагрузите страницу", - "VOTDisabledForDBUpdating": "VOT отключён из-за ошибки при обновлении базы данных. Закройте все открытые вкладки с {0} и попробуйте снова", - "VOTFailedWriteToDB": "Не удалось записать данные в базу данных", - "VOTFailedReadFromDB": "Не удалось получить данные из базы данных", "VOTSubtitles": "Субтитры", "VOTSubtitlesDisabled": "Отключены", "VOTSubtitlesMaxLength": "Максимальная длина субтитров", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Введите токен доступа Udemy", "VOTUdemyData": "Данные Udemy", "streamNoConnectionToServer": "Нет подключения к серверу", - "VOTCloudflareDoesntSupportStreams": "Версия скрипта Cloudflare не поддерживает перевод трансляций", "searchField": "Поиск...", "VOTTranslateAPIErrors": "Перевод ошибок из API", "VOTTranslationService": "Сервис перевода", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Введите адрес worker прокси-сервера", "VOTM3u8ProxyHost": "Введите адрес m3u8 прокси-сервера", "proxySettings": "Настройки прокси-сервера" -} +} \ No newline at end of file diff --git a/src/localization/locales/si.json b/src/localization/locales/si.json index 84937e20..099bbdc5 100644 --- a/src/localization/locales/si.json +++ b/src/localization/locales/si.json @@ -35,11 +35,6 @@ "VOTPremiere": "පරිවර්තනය කිරීමට පෙර ප් රථම දර්ශනය අවසන් වන තෙක් බලා සිටින්න", "VOTVideoIsTooLong": "වීඩියෝ එක දිග වැඩියි", "VOTNoVideoIDFound": "වීඩියෝ හැඳුනුම්පතක් සොයාගත නොහැකි විය", - "VOTFailedInitDB": "දත්ත සමුදාය ආරම්භ කිරීමට අසමත්", - "VOTDBNeedUpdate": "දත්ත සමුදාය යාවත්කාලීන අවශ්ය, පිටුව නැවත පූරණය කරන්න", - "VOTDisabledForDBUpdating": "දත්ත සමුදාය යාවත්කාලීන කිරීමේදී සිදු වූ දෝෂයක් හේතුවෙන් VOT අක් රීය කර ඇත. {0} සමග සියලුම විවෘත ටැබ් වසා නැවත උත්සාහ කරන්න", - "VOTFailedWriteToDB": "දත්ත සමුදාය වෙත දත්ත ලිවිය නොහැක", - "VOTFailedReadFromDB": "දත්ත ගබඩාවෙන් දත්ත ලබා ගත නොහැක", "VOTSubtitles": "උපසිරැසි", "VOTSubtitlesDisabled": "අක්රිය කර ඇත", "VOTSubtitlesMaxLength": "උපසිරැසි උපරිම දිග", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy ප්රවේශ සංකේතය ඇතුලත් කරන්න", "VOTUdemyData": "උඩෙමි දත්ත", "streamNoConnectionToServer": "සර්වර් එකට කිසිම සම්බන්ධයක් නෑ", - "VOTCloudflareDoesntSupportStreams": "Script එකේ Cloudflare අනුවාදය stream translation වලට සහය නොදක්වයි", "searchField": "හොයන්න...", "VOTTranslateAPIErrors": "API වෙතින් දෝෂ පරිවර්තනය කරන්න", "VOTTranslationService": "පරිවර්තන සේවාව", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "ප්රොක්සි සේවක ලිපිනය ඇතුලත් කරන්න", "VOTM3u8ProxyHost": "M3u8 ප්රොක්සි සේවකයාගේ ලිපිනය ඇතුලත් කරන්න", "proxySettings": "ප්රොක්සි සැකසුම්" -} +} \ No newline at end of file diff --git a/src/localization/locales/sk.json b/src/localization/locales/sk.json index 9cdcda16..dc823640 100644 --- a/src/localization/locales/sk.json +++ b/src/localization/locales/sk.json @@ -35,11 +35,6 @@ "VOTPremiere": "Pred prekladom počkajte na koniec premiéry", "VOTVideoIsTooLong": "Video je príliš dlhé", "VOTNoVideoIDFound": "Nebolo nájdené žiadne video ID", - "VOTFailedInitDB": "Nepodarilo sa inicializovať databázu", - "VOTDBNeedUpdate": "Databáza potrebuje aktualizáciu, znovu načítajte stránku", - "VOTDisabledForDBUpdating": "VOT je vypnutý z dôvodu chyby pri aktualizácii databázy. Zatvorte všetky otvorené karty pomocou {0} a skúste to znova", - "VOTFailedWriteToDB": "Údaje sa nedajú zapísať do databázy", - "VOTFailedReadFromDB": "Údaje sa nepodarilo získať z databázy", "VOTSubtitles": "Nadpis", "VOTSubtitlesDisabled": "Vypnutý", "VOTSubtitlesMaxLength": "Maximálna dĺžka titulkov", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Zadajte Prístupový Token Udemy", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Neexistuje žiadne pripojenie k serveru", - "VOTCloudflareDoesntSupportStreams": "Verzia skriptu Cloudflare nepodporuje preklad streamu", "searchField": "Vyhľadávanie...", "VOTTranslateAPIErrors": "Preklad chýb z API", "VOTTranslationService": "Prekladateľská Služba", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Zadajte adresu proxy pracovníka", "VOTM3u8ProxyHost": "Zadajte adresu pracovníka proxy m3u8", "proxySettings": "Nastavenia Servera Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/sl.json b/src/localization/locales/sl.json index f6e5a065..cf29b472 100644 --- a/src/localization/locales/sl.json +++ b/src/localization/locales/sl.json @@ -35,11 +35,6 @@ "VOTPremiere": "Pred prevajanjem počakajte, da se premiera konča", "VOTVideoIsTooLong": "Video je predolg", "VOTNoVideoIDFound": "Video ID ni bil najden", - "VOTFailedInitDB": "Ni uspelo inicializirati baze podatkov", - "VOTDBNeedUpdate": "Baza podatkov potrebuje posodobitev, ponovno naložite stran", - "VOTDisabledForDBUpdating": "VOT je onemogočen zaradi napake pri posodabljanju baze podatkov. Zaprite vse odprte zavihke z {0} in poskusite znova", - "VOTFailedWriteToDB": "Podatkov ni bilo mogoče zapisati v bazo podatkov", - "VOTFailedReadFromDB": "Podatkov ni bilo mogoče pridobiti iz baze podatkov", "VOTSubtitles": "Podnapisi", "VOTSubtitlesDisabled": "Onemogočeno", "VOTSubtitlesMaxLength": "Podnapisi največja dolžina", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Vnesite Žeton Za Dostop", "VOTUdemyData": "Podatki O Udemiju", "streamNoConnectionToServer": "Ni povezave s strežnikom", - "VOTCloudflareDoesntSupportStreams": "Različica skripta Cloudflare ne podpira prevajanja tokov", "searchField": "Išči...", "VOTTranslateAPIErrors": "Prevedi napake iz API-ja", "VOTTranslationService": "Prevajalska Služba", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Vnesite naslov pooblaščenca", "VOTM3u8ProxyHost": "Vnesite naslov pooblaščenca m3u8", "proxySettings": "Nastavitve Posrednika" -} +} \ No newline at end of file diff --git a/src/localization/locales/sq.json b/src/localization/locales/sq.json index 65ac9f1c..fa67e604 100644 --- a/src/localization/locales/sq.json +++ b/src/localization/locales/sq.json @@ -35,11 +35,6 @@ "VOTPremiere": "Prisni që premiera të përfundojë para se të përktheni", "VOTVideoIsTooLong": "Video është shumë e gjatë", "VOTNoVideoIDFound": "Nuk u gjet ASNJË ID video", - "VOTFailedInitDB": "Nuk arriti të inicializojë bazën e të dhënave", - "VOTDBNeedUpdate": "Baza e të dhënave ka nevojë për një azhurnim, ju lutemi ringarkoni faqen", - "VOTDisabledForDBUpdating": "VOT është çaktivizuar për shkak të një gabimi kur azhurnoni Bazën e të Dhënave. Mbyllni të gjitha skedat e hapura me {0} dhe provoni përsëri", - "VOTFailedWriteToDB": "Të dhënat nuk mund të shkruhen në bazën e të dhënave", - "VOTFailedReadFromDB": "Të dhënat nuk mund të merren nga baza e të dhënave", "VOTSubtitles": "Titra", "VOTSubtitlesDisabled": "Me aftësi të kufizuara", "VOTSubtitlesMaxLength": "Titra gjatësia maksimale", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Shkruani Udemy Access Token", "VOTUdemyData": "Të Dhënat E Udemy", "streamNoConnectionToServer": "Nuk ka lidhje me serverin", - "VOTCloudflareDoesntSupportStreams": "Versioni Cloudflare i shkrimit nuk mbështet përkthimin e rrjedhës", "searchField": "Kërko...", "VOTTranslateAPIErrors": "Përktheni gabimet NGA API", "VOTTranslationService": "Shërbimi I Përkthimit", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Vendosni adresën e punonjësit të përfaqësuesit", "VOTM3u8ProxyHost": "Vendosni adresën e punonjësit të përfaqësuesit m3u8", "proxySettings": "Cilësimet E Përfaqësuesit" -} +} \ No newline at end of file diff --git a/src/localization/locales/sr.json b/src/localization/locales/sr.json index 0ced4d58..87c5a4ce 100644 --- a/src/localization/locales/sr.json +++ b/src/localization/locales/sr.json @@ -35,11 +35,6 @@ "VOTPremiere": "Сачекајте крај премијере пре него што преведете", "VOTVideoIsTooLong": "Видео је предуг", "VOTNoVideoIDFound": "Видео ИД није пронађен", - "VOTFailedInitDB": "Иницијализација базе података није успела", - "VOTDBNeedUpdate": "База података треба ажурирање, поново учитајте страницу", - "VOTDisabledForDBUpdating": "Вот је онемогућен због грешке приликом ажурирања базе података. Затворите све отворене картице са {0} и покушајте поново", - "VOTFailedWriteToDB": "Подаци нису успели да се напишу у базу података", - "VOTFailedReadFromDB": "Подаци нису могли да се извуку из базе података", "VOTSubtitles": "Титлови", "VOTSubtitlesDisabled": "Неспособан за рад", "VOTSubtitlesMaxLength": "Максимална дужина титлова", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Унесите Удеми приступни токен", "VOTUdemyData": "Удеми Подаци", "streamNoConnectionToServer": "Нема везе са сервером", - "VOTCloudflareDoesntSupportStreams": "Цлоудфларе верзија скрипте не подржава стриминг", "searchField": "Претрага...", "VOTTranslateAPIErrors": "Превођење грешака из АПИ-ја", "VOTTranslationService": "Услуга писменог превођења", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Унесите радну адресу проки сервера", "VOTM3u8ProxyHost": "Унесите адресу радног проки сервера м3у8", "proxySettings": "Подешавања проксија" -} +} \ No newline at end of file diff --git a/src/localization/locales/su.json b/src/localization/locales/su.json index f4e1a0e6..85a71946 100644 --- a/src/localization/locales/su.json +++ b/src/localization/locales/su.json @@ -35,11 +35,6 @@ "VOTPremiere": "Tungguan premiere pikeun mungkas saméméh narjamahkeun", "VOTVideoIsTooLong": "Video téh panjang teuing", "VOTNoVideoIDFound": "Teu aya video ANU kuring mendakan", - "VOTFailedInitDB": "Gagal pikeun initialize database", - "VOTDBNeedUpdate": "Database butuh update, mangga reload kaca", - "VOTDisabledForDBUpdating": "VOT ditumpurkeun alatan kasalahan nalika ngamutahirkeun Database. Tutup sadaya tab kabuka jeung {0} jeung coba deui", - "VOTFailedWriteToDB": "Data teu bisa ditulis ka database", - "VOTFailedReadFromDB": "Data teu bisa dicokot tina database", "VOTSubtitles": "Subjudul", "VOTSubtitlesDisabled": "Cacat", "VOTSubtitlesMaxLength": "Subjudul panjang maksimum", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Asupkeun Udemy Aksés Token", "VOTUdemyData": "Data Udemy", "streamNoConnectionToServer": "Teu aya sambungan ka server", - "VOTCloudflareDoesntSupportStreams": "Versi Cloudflare tina naskah henteu ngadukung tarjamahan aliran", "searchField": "Néangan...", "VOTTranslateAPIErrors": "Narjamahkeun kasalahan TINA API", "VOTTranslationService": "Jasa Tarjamahan", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Asupkeun alamat proxy worker", "VOTM3u8ProxyHost": "Tuliskeun alamat worker proxy m3u8", "proxySettings": "Setélan Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/sv.json b/src/localization/locales/sv.json index b9c9cb07..d6727248 100644 --- a/src/localization/locales/sv.json +++ b/src/localization/locales/sv.json @@ -35,11 +35,6 @@ "VOTPremiere": "Vänta tills premiären slutar innan du översätter", "VOTVideoIsTooLong": "Videon är för lång", "VOTNoVideoIDFound": "Inget video-ID hittades", - "VOTFailedInitDB": "Misslyckades med att initiera databasen", - "VOTDBNeedUpdate": "Databasen behöver en uppdatering, ladda om sidan", - "VOTDisabledForDBUpdating": "VOT är inaktiverat på grund av ett fel vid uppdatering av databasen. Stäng alla öppna flikar med {0} och försök igen", - "VOTFailedWriteToDB": "Data kunde inte skrivas till databasen", - "VOTFailedReadFromDB": "Data kunde inte hämtas från databasen", "VOTSubtitles": "Rubrik", "VOTSubtitlesDisabled": "Inaktiverad", "VOTSubtitlesMaxLength": "Textning max längd", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Ange Udemy Access Token", "VOTUdemyData": "Udemy Data", "streamNoConnectionToServer": "Det finns ingen anslutning till servern", - "VOTCloudflareDoesntSupportStreams": "Cloudflare-versionen av skriptet stöder inte strömöversättning", "searchField": "Söka...", "VOTTranslateAPIErrors": "Översätt fel från API", "VOTTranslationService": "översättningstjänst", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Ange proxyarbetarens adress", "VOTM3u8ProxyHost": "Ange adressen till M3U8-proxyarbetaren", "proxySettings": "Proxyinställningar" -} +} \ No newline at end of file diff --git a/src/localization/locales/sw.json b/src/localization/locales/sw.json index 3ba0e0a4..c40f855d 100644 --- a/src/localization/locales/sw.json +++ b/src/localization/locales/sw.json @@ -35,11 +35,6 @@ "VOTPremiere": "Subiri premiere iishe kabla ya kutafsiri", "VOTVideoIsTooLong": "Video ni ndefu sana", "VOTNoVideoIDFound": "HAKUNA KITAMBULISHO cha video kilichopatikana", - "VOTFailedInitDB": "Imeshindwa kuanzisha database", - "VOTDBNeedUpdate": "Hifadhidata inahitaji sasisho, tafadhali pakia tena ukurasa", - "VOTDisabledForDBUpdating": "VOT imezimwa kutokana na hitilafu wakati wa kusasisha Hifadhidata. Funga tabo zote wazi na {0} na ujaribu tena", - "VOTFailedWriteToDB": "Data haikuweza kuandikwa kwenye hifadhidata", - "VOTFailedReadFromDB": "Data haikuweza kupatikana kutoka database", "VOTSubtitles": "Manukuu", "VOTSubtitlesDisabled": "Walemavu", "VOTSubtitlesMaxLength": "Manukuu urefu wa juu", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Ingiza Ishara Ya Ufikiaji Wa Udemy", "VOTUdemyData": "Takwimu Za Udemy", "streamNoConnectionToServer": "Hakuna uhusiano na server", - "VOTCloudflareDoesntSupportStreams": "Cloudflare toleo la script haina msaada mkondo tafsiri", "searchField": "Tafuta...", "VOTTranslateAPIErrors": "Tafsiri makosa KUTOKA API", "VOTTranslationService": "Huduma Ya Tafsiri", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Ingiza anwani ya mfanyakazi wa wakala", "VOTM3u8ProxyHost": "Ingiza anwani ya mfanyakazi wa wakala wa m3u8", "proxySettings": "Mipangilio Ya Wakala" -} +} \ No newline at end of file diff --git a/src/localization/locales/tr.json b/src/localization/locales/tr.json index baab959c..ce559d5f 100644 --- a/src/localization/locales/tr.json +++ b/src/localization/locales/tr.json @@ -35,11 +35,6 @@ "VOTPremiere": "Çeviri için prömiyerin bitmesini bekleyin", "VOTVideoIsTooLong": "Video çok uzun", "VOTNoVideoIDFound": "Video kimlik numarası bulunamadı", - "VOTFailedInitDB": "Veritabanı başlatılamadı", - "VOTDBNeedUpdate": "Veritabanı güncelleme gerektiriyor, lütfen sayfayı yeniden yükleyin", - "VOTDisabledForDBUpdating": "Veritabanı güncelleştirme hatası nedeniyle VOT kapalı. {0} ile açık olan tüm sekmeleri kapatın ve tekrar deneyin.", - "VOTFailedWriteToDB": "Veritabanına yazma hatası", - "VOTFailedReadFromDB": "Veri okuma hatası", "VOTSubtitles": "Altyazılar", "VOTSubtitlesDisabled": "Kapalı", "VOTSubtitlesMaxLength": "En fazla altyazı uzunluğu", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy Erişim Belirtecini Girin", "VOTUdemyData": "Udemy Verileri", "streamNoConnectionToServer": "Sunucuya bağlantı yok", - "VOTCloudflareDoesntSupportStreams": "Komut dosyasının Cloudflare sürümü akış çevirisini desteklemiyor", "searchField": "Aramak...", "VOTTranslateAPIErrors": "API'DEN hataları çevir", "VOTTranslationService": "Çeviri Hizmeti", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Vekil çalışan adresini girin", "VOTM3u8ProxyHost": "M3u8 proxy çalışanının adresini girin", "proxySettings": "Proxy Ayarları" -} +} \ No newline at end of file diff --git a/src/localization/locales/uk.json b/src/localization/locales/uk.json index 87d9405a..ad97892a 100644 --- a/src/localization/locales/uk.json +++ b/src/localization/locales/uk.json @@ -35,11 +35,6 @@ "VOTPremiere": "Дочекайтеся закінчення прем'єри, перш ніж перекладати", "VOTVideoIsTooLong": "Відео занадто довге", "VOTNoVideoIDFound": "Ідентифікатор відео не знайдено", - "VOTFailedInitDB": "Не вдалося ініціалізувати базу даних", - "VOTDBNeedUpdate": "База даних потребує оновлення, будь ласка, перезавантажте сторінку", - "VOTDisabledForDBUpdating": "VOT вимкнено через помилку під час оновлення бази даних. Закрийте всі відкриті вкладки за допомогою {0} і повторіть спробу", - "VOTFailedWriteToDB": "Дані не вдалося записати в базу даних", - "VOTFailedReadFromDB": "Дані не вдалося витягти з бази даних", "VOTSubtitles": "Субтитр", "VOTSubtitlesDisabled": "Непрацездатний", "VOTSubtitlesMaxLength": "Максимальна довжина субтитрів", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Введіть маркер доступу Udemy", "VOTUdemyData": "Дані Udemy", "streamNoConnectionToServer": "Немає підключення до сервера", - "VOTCloudflareDoesntSupportStreams": "Версія сценарію Cloudflare не підтримує потокове передавання", "searchField": "Пошук...", "VOTTranslateAPIErrors": "Переклад помилок з API", "VOTTranslationService": "Сервис перекладу", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Введіть адресу worker проксі-сервера", "VOTM3u8ProxyHost": "Введіть адресу m3u8 проксі-сервера", "proxySettings": "Налаштування проксі-сервера" -} +} \ No newline at end of file diff --git a/src/localization/locales/ur.json b/src/localization/locales/ur.json index cd8b92a0..b87e9152 100644 --- a/src/localization/locales/ur.json +++ b/src/localization/locales/ur.json @@ -35,11 +35,6 @@ "VOTPremiere": "ترجمہ کرنے سے پہلے پریمر کے ختم ہونے کا انتظار کریں", "VOTVideoIsTooLong": "ویڈیو بہت لمبی ہے", "VOTNoVideoIDFound": "ویڈیو ID نہیں ملا", - "VOTFailedInitDB": "ڈیٹا بیس کی ابتدائیت ناکام رہی", - "VOTDBNeedUpdate": "ڈیٹا بیس کو اپ ڈیٹ کرنے کی ضرورت ہے، براہ کرم صفحہ کو دوبارہ لوڈ کریں", - "VOTDisabledForDBUpdating": "VOT ڈیٹا بیس کو اپ ڈیٹ کرتے وقت خرابی کی وجہ سے بند ہے۔ {0} تمام کھلے پروگرامات کو بند کرکے دوبارہ کوشش کریں", - "VOTFailedWriteToDB": "ڈیٹا بیس میں ڈیٹا لکھنا ناکام رہا", - "VOTFailedReadFromDB": "ڈیٹا بیس سے ڈیٹا حاصل نہیں ہوا", "VOTSubtitles": "سب ٹائٹلز", "VOTSubtitlesDisabled": "منسوخ کر دیے گئے ہیں", "VOTSubtitlesMaxLength": "سب ٹائٹل کی زیادہ سے زیادہ لمبائی", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy رسائی ٹوکن درج کریں", "VOTUdemyData": "اڈیمی ڈیٹا", "streamNoConnectionToServer": "سرور سے کوئی تعلق نہیں ہے", - "VOTCloudflareDoesntSupportStreams": "اسکرپٹ کا کلاؤڈ فلیئر ورژن اسٹریم ٹرانسلیشن کی حمایت نہیں کرتا ہے ۔ ", "searchField": "تلاش...", "VOTTranslateAPIErrors": "API سے غلطیوں کا ترجمہ کریں", "VOTTranslationService": "ترجمہ سروس", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "پراکسی ورکر ایڈریس درج کریں ۔ ", "VOTM3u8ProxyHost": "M3u8 پراکسی ورکر کا پتہ درج کریں ۔ ", "proxySettings": "پراکسی کی ترتیبات" -} +} \ No newline at end of file diff --git a/src/localization/locales/uz.json b/src/localization/locales/uz.json index 47aed484..d7698230 100644 --- a/src/localization/locales/uz.json +++ b/src/localization/locales/uz.json @@ -35,11 +35,6 @@ "VOTPremiere": "Tarjima qilishdan oldin premyera tugashini kuting", "VOTVideoIsTooLong": "Video juda uzun", "VOTNoVideoIDFound": "Video identifikatori topilmadi", - "VOTFailedInitDB": "Ma'lumotlar bazasini ishga tushirib bo'lmadi", - "VOTDBNeedUpdate": "Ma'lumotlar bazasi yangilanishga muhtoj, iltimos, sahifani qayta yuklang", - "VOTDisabledForDBUpdating": "Ma'lumotlar bazasini yangilashda xato tufayli vot o'chirilgan. Barcha ochiq tablarni {0} bilan yoping va qaytadan urinib ko'ring", - "VOTFailedWriteToDB": "Ma'lumotlar bazasiga yozib bo'lmadi", - "VOTFailedReadFromDB": "Ma'lumotlar bazasidan ma'lumot olinmadi", "VOTSubtitles": "Taglavhalar", "VOTSubtitlesDisabled": "Nogiron", "VOTSubtitlesMaxLength": "Subtitrlar maksimal uzunlik", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Udemy Kirish Tokenini Kiriting", "VOTUdemyData": "Udemy Ma'lumotlari", "streamNoConnectionToServer": "Serverga ulanish yo'q", - "VOTCloudflareDoesntSupportStreams": "Skriptning Cloudflare versiyasi oqim tarjimasini qo'llab-quvvatlamaydi", "searchField": "Qidirish...", "VOTTranslateAPIErrors": "API-dan xatolarni tarjima qiling", "VOTTranslationService": "Tarjima Xizmati", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Proksi-server manzilini kiriting", "VOTM3u8ProxyHost": "M3u8 proksi-serverining manzilini kiriting", "proxySettings": "Proksi Moslamalari" -} +} \ No newline at end of file diff --git a/src/localization/locales/vi.json b/src/localization/locales/vi.json index 370613ab..0e60e5c9 100644 --- a/src/localization/locales/vi.json +++ b/src/localization/locales/vi.json @@ -35,11 +35,6 @@ "VOTPremiere": "Vui lòng chờ đợi đến khi phát hành kỷ niệm kết thúc trước khi dịch", "VOTVideoIsTooLong": "Video quá dài", "VOTNoVideoIDFound": "Không tìm thấy ID video", - "VOTFailedInitDB": "Không thể khởi tạo cơ sở dữ liệu", - "VOTDBNeedUpdate": "Cơ sở dữ liệu cần cập nhật, vui lòng tải lại trang", - "VOTDisabledForDBUpdating": "VOT bị tắt do lỗi khi cập nhật cơ sở dữ liệu. Vui lòng đóng tất cả các tab mở với {0} và thử lại", - "VOTFailedWriteToDB": "Không thể ghi dữ liệu vào cơ sở dữ liệu", - "VOTFailedReadFromDB": "Không thể đọc dữ liệu từ cơ sở dữ liệu", "VOTSubtitles": "Phụ đề", "VOTSubtitlesDisabled": "Tắt", "VOTSubtitlesMaxLength": "Độ dài tối đa của phụ đề", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Nhập Mã Thông Báo Truy Cập Udemy", "VOTUdemyData": "Dữ Liệu Udemy", "streamNoConnectionToServer": "Không có kết nối đến máy chủ", - "VOTCloudflareDoesntSupportStreams": "Phiên Bản Cloudflare của tập lệnh không hỗ trợ dịch luồng", "searchField": "Tìm kiếm...", "VOTTranslateAPIErrors": "Dịch lỗi TỪ API", "VOTTranslationService": "Dịch Vụ Dịch Thuật", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Nhập địa chỉ công nhân proxy", "VOTM3u8ProxyHost": "Nhập địa chỉ của nhân viên proxy m3u8", "proxySettings": "Cài Đặt Proxy" -} +} \ No newline at end of file diff --git a/src/localization/locales/zh.json b/src/localization/locales/zh.json index cb373527..f21a9590 100644 --- a/src/localization/locales/zh.json +++ b/src/localization/locales/zh.json @@ -35,11 +35,6 @@ "VOTPremiere": "等首映结束再翻译", "VOTVideoIsTooLong": "视频太长", "VOTNoVideoIDFound": "没有找到视频ID", - "VOTFailedInitDB": "初始化数据库失败", - "VOTDBNeedUpdate": "数据库需要更新,请重新加载页面", - "VOTDisabledForDBUpdating": "VOT由于更新数据库时出错而被禁用。 使用{0}关闭所有打开的选项卡,然后重试", - "VOTFailedWriteToDB": "无法将数据写入数据库", - "VOTFailedReadFromDB": "无法从数据库中检索数据", "VOTSubtitles": "字幕", "VOTSubtitlesDisabled": "残疾人士", "VOTSubtitlesMaxLength": "字幕最大长度", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "输入Udemy访问令牌", "VOTUdemyData": "Udemy数据", "streamNoConnectionToServer": "没有连接到服务器", - "VOTCloudflareDoesntSupportStreams": "Cloudflare版本的脚本不支持流翻译", "searchField": "搜索。..", "VOTTranslateAPIErrors": "从API翻译错误", "VOTTranslationService": "翻译服务", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "输入代理工作者地址", "VOTM3u8ProxyHost": "输入m3u8代理worker的地址", "proxySettings": "代理设置" -} +} \ No newline at end of file diff --git a/src/localization/locales/zu.json b/src/localization/locales/zu.json index 9a6f3467..6ce9c9e5 100644 --- a/src/localization/locales/zu.json +++ b/src/localization/locales/zu.json @@ -35,11 +35,6 @@ "VOTPremiere": "Linda i-premiere iphele ngaphambi kokuhumusha", "VOTVideoIsTooLong": "Ividiyo yinde kakhulu", "VOTNoVideoIDFound": "Ayikho i-id yevidiyo etholakele", - "VOTFailedInitDB": "Yehlulekile ukuqala i-database", - "VOTDBNeedUpdate": "I-database idinga ukuvuselelwa, sicela ulayishe kabusha ikhasi", - "VOTDisabledForDBUpdating": "I-VOT ikhubazekile ngenxa yephutha lapho kuvuselelwa I-database. Vala wonke amathebhu evulekile nge {0} bese uzama futhi", - "VOTFailedWriteToDB": "Idatha ayikwazanga ukubhalwa ku database", - "VOTFailedReadFromDB": "Idatha ayikwazanga ukubuyiswa kusuka ku database", "VOTSubtitles": "Imibhalo engezansi", "VOTSubtitlesDisabled": "Abakhubazekile", "VOTSubtitlesMaxLength": "Imibhalo engezansi ubude obukhulu", @@ -188,7 +183,6 @@ "enterUdemyAccessToken": "Faka Udemy Ukufinyelela Ithokheni", "VOTUdemyData": "Idatha Ye-Udemy", "streamNoConnectionToServer": "Akukho ukuxhumana neseva", - "VOTCloudflareDoesntSupportStreams": "Inguqulo ye Cloudflare yeskripthi ayisekeli ukuhunyushwa kokusakazwa", "searchField": "Ukucinga...", "VOTTranslateAPIErrors": "Humusha amaphutha KUSUKA API", "VOTTranslationService": "Inkonzo Yokuhumusha", @@ -197,4 +191,4 @@ "VOTProxyWorkerHost": "Faka ikheli proxy isisebenzi", "VOTM3u8ProxyHost": "Faka ikheli le-m3u8 proxy worker", "proxySettings": "Izilungiselelo Ze-Proxy" -} +} \ No newline at end of file From 9fafc659fc38dd8cad339d2ebc970b3759e327a1 Mon Sep 17 00:00:00 2001 From: Toil Date: Wed, 27 Dec 2023 11:26:26 +0300 Subject: [PATCH 09/10] all locales version bumped --- src/localization/locales/af.json | 2 +- src/localization/locales/am.json | 2 +- src/localization/locales/ar.json | 2 +- src/localization/locales/az.json | 2 +- src/localization/locales/bg.json | 2 +- src/localization/locales/bn.json | 2 +- src/localization/locales/bs.json | 2 +- src/localization/locales/ca.json | 2 +- src/localization/locales/cs.json | 2 +- src/localization/locales/cy.json | 2 +- src/localization/locales/da.json | 2 +- src/localization/locales/de.json | 2 +- src/localization/locales/el.json | 2 +- src/localization/locales/en.json | 2 +- src/localization/locales/es.json | 2 +- src/localization/locales/et.json | 2 +- src/localization/locales/eu.json | 2 +- src/localization/locales/fa.json | 2 +- src/localization/locales/fi.json | 2 +- src/localization/locales/fr.json | 2 +- src/localization/locales/gl.json | 2 +- src/localization/locales/hi.json | 2 +- src/localization/locales/hr.json | 2 +- src/localization/locales/hu.json | 2 +- src/localization/locales/hy.json | 2 +- src/localization/locales/id.json | 2 +- src/localization/locales/it.json | 2 +- src/localization/locales/ja.json | 2 +- src/localization/locales/jv.json | 2 +- src/localization/locales/kk.json | 2 +- src/localization/locales/km.json | 2 +- src/localization/locales/kn.json | 2 +- src/localization/locales/ko.json | 2 +- src/localization/locales/lo.json | 2 +- src/localization/locales/mk.json | 2 +- src/localization/locales/ml.json | 2 +- src/localization/locales/mn.json | 2 +- src/localization/locales/ms.json | 2 +- src/localization/locales/mt.json | 2 +- src/localization/locales/my.json | 2 +- src/localization/locales/ne.json | 2 +- src/localization/locales/nl.json | 2 +- src/localization/locales/pa.json | 2 +- src/localization/locales/pl.json | 2 +- src/localization/locales/pt.json | 2 +- src/localization/locales/ro.json | 2 +- src/localization/locales/si.json | 2 +- src/localization/locales/sk.json | 2 +- src/localization/locales/sl.json | 2 +- src/localization/locales/sq.json | 2 +- src/localization/locales/sr.json | 2 +- src/localization/locales/su.json | 2 +- src/localization/locales/sv.json | 2 +- src/localization/locales/sw.json | 2 +- src/localization/locales/tr.json | 2 +- src/localization/locales/uk.json | 2 +- src/localization/locales/ur.json | 2 +- src/localization/locales/uz.json | 2 +- src/localization/locales/vi.json | 2 +- src/localization/locales/zh.json | 2 +- src/localization/locales/zu.json | 2 +- 61 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/localization/locales/af.json b/src/localization/locales/af.json index b62fdd9d..0159568a 100644 --- a/src/localization/locales/af.json +++ b/src/localization/locales/af.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "aanbeveel", "translateVideo": "Vertaal video", "disableTranslate": "Skakel af", diff --git a/src/localization/locales/am.json b/src/localization/locales/am.json index c8c00255..197e58d5 100644 --- a/src/localization/locales/am.json +++ b/src/localization/locales/am.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "የሚመከር", "translateVideo": "ቪዲዮ ተርጉም", "disableTranslate": "አጥፉ", diff --git a/src/localization/locales/ar.json b/src/localization/locales/ar.json index ae5f9091..2663148e 100644 --- a/src/localization/locales/ar.json +++ b/src/localization/locales/ar.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "موصى به", "translateVideo": "ترجمة الفيديو", "disableTranslate": "إيقاف التشغيل", diff --git a/src/localization/locales/az.json b/src/localization/locales/az.json index 85ff2af2..a75d38d5 100644 --- a/src/localization/locales/az.json +++ b/src/localization/locales/az.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "tövsiyə", "translateVideo": "Videonu tərcümə edin", "disableTranslate": "Söndürün", diff --git a/src/localization/locales/bg.json b/src/localization/locales/bg.json index a72bffee..974d9aec 100644 --- a/src/localization/locales/bg.json +++ b/src/localization/locales/bg.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "препоръчано", "translateVideo": "Превод на видео", "disableTranslate": "Изключи", diff --git a/src/localization/locales/bn.json b/src/localization/locales/bn.json index ae6012bc..f5bd02d7 100644 --- a/src/localization/locales/bn.json +++ b/src/localization/locales/bn.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "সুপারিশ করা হয়", "translateVideo": "ভিডিও অনুবাদ করুন", "disableTranslate": "বন্ধ করুন", diff --git a/src/localization/locales/bs.json b/src/localization/locales/bs.json index 2d44c802..d4abcbec 100644 --- a/src/localization/locales/bs.json +++ b/src/localization/locales/bs.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "preporučeno", "translateVideo": "Prevedi video", "disableTranslate": "Isključi", diff --git a/src/localization/locales/ca.json b/src/localization/locales/ca.json index 57d3acf6..05663f92 100644 --- a/src/localization/locales/ca.json +++ b/src/localization/locales/ca.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recomanat", "translateVideo": "Traduir vídeo", "disableTranslate": "Apaga", diff --git a/src/localization/locales/cs.json b/src/localization/locales/cs.json index 99d3ef82..875655cf 100644 --- a/src/localization/locales/cs.json +++ b/src/localization/locales/cs.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "doporučeno", "translateVideo": "Přeložit video", "disableTranslate": "Vypnout", diff --git a/src/localization/locales/cy.json b/src/localization/locales/cy.json index 1784b156..90a581a4 100644 --- a/src/localization/locales/cy.json +++ b/src/localization/locales/cy.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "argymhellir", "translateVideo": "Cyfieithu fideo", "disableTranslate": "Trowch i ffwrdd", diff --git a/src/localization/locales/da.json b/src/localization/locales/da.json index 7c1a44d5..02a667e4 100644 --- a/src/localization/locales/da.json +++ b/src/localization/locales/da.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "anbefalet", "translateVideo": "Oversæt video", "disableTranslate": "Slukke", diff --git a/src/localization/locales/de.json b/src/localization/locales/de.json index d79d3a04..eaddb5b1 100644 --- a/src/localization/locales/de.json +++ b/src/localization/locales/de.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "es wird empfohlen", "translateVideo": "Video übersetzen", "disableTranslate": "Ausschalten", diff --git a/src/localization/locales/el.json b/src/localization/locales/el.json index e5a45f7a..6761bdc8 100644 --- a/src/localization/locales/el.json +++ b/src/localization/locales/el.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "προτεινόμενη", "translateVideo": "Μετάφραση βίντεο", "disableTranslate": "Απενεργοποιήσετε", diff --git a/src/localization/locales/en.json b/src/localization/locales/en.json index f4c1eb33..710674a6 100644 --- a/src/localization/locales/en.json +++ b/src/localization/locales/en.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recommended", "translateVideo": "Translate video", "disableTranslate": "Turn off", diff --git a/src/localization/locales/es.json b/src/localization/locales/es.json index 7f84761e..b76fb68b 100644 --- a/src/localization/locales/es.json +++ b/src/localization/locales/es.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recomendado", "translateVideo": "Traducir vídeo", "disableTranslate": "Apagar", diff --git a/src/localization/locales/et.json b/src/localization/locales/et.json index 2281dfc4..4419607b 100644 --- a/src/localization/locales/et.json +++ b/src/localization/locales/et.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "soovitatav", "translateVideo": "Tõlgi video", "disableTranslate": "Lülitama", diff --git a/src/localization/locales/eu.json b/src/localization/locales/eu.json index 19c10fc7..2e21d823 100644 --- a/src/localization/locales/eu.json +++ b/src/localization/locales/eu.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "gomendatua", "translateVideo": "Itzuli bideoa", "disableTranslate": "Itzali", diff --git a/src/localization/locales/fa.json b/src/localization/locales/fa.json index 04cc9550..b25e0538 100644 --- a/src/localization/locales/fa.json +++ b/src/localization/locales/fa.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "توصیه شده", "translateVideo": "ترجمه ویدیو", "disableTranslate": "غیرفعال کردن", diff --git a/src/localization/locales/fi.json b/src/localization/locales/fi.json index c9209ac8..890706d5 100644 --- a/src/localization/locales/fi.json +++ b/src/localization/locales/fi.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "suositella", "translateVideo": "Käännä video", "disableTranslate": "Sammuttaa", diff --git a/src/localization/locales/fr.json b/src/localization/locales/fr.json index 7a79f26b..a1e5dc91 100644 --- a/src/localization/locales/fr.json +++ b/src/localization/locales/fr.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recommande", "translateVideo": "Traduire la vidéo", "disableTranslate": "Désactiver", diff --git a/src/localization/locales/gl.json b/src/localization/locales/gl.json index 3512ddd2..938f7b98 100644 --- a/src/localization/locales/gl.json +++ b/src/localization/locales/gl.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recomendado", "translateVideo": "Traducir vídeo", "disableTranslate": "Apaga", diff --git a/src/localization/locales/hi.json b/src/localization/locales/hi.json index b8e62eae..fb3344f7 100644 --- a/src/localization/locales/hi.json +++ b/src/localization/locales/hi.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "अनुशंसित", "translateVideo": "वीडियो अनुवाद करें", "disableTranslate": "बंद करें", diff --git a/src/localization/locales/hr.json b/src/localization/locales/hr.json index db575167..d8cb38a1 100644 --- a/src/localization/locales/hr.json +++ b/src/localization/locales/hr.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "preporučeno", "translateVideo": "Prevedi video", "disableTranslate": "Isključi", diff --git a/src/localization/locales/hu.json b/src/localization/locales/hu.json index 7d3714ba..d849786f 100644 --- a/src/localization/locales/hu.json +++ b/src/localization/locales/hu.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ajánlott", "translateVideo": "Videó fordítása", "disableTranslate": "Kapcsolja ki", diff --git a/src/localization/locales/hy.json b/src/localization/locales/hy.json index e0523d79..fd496d8a 100644 --- a/src/localization/locales/hy.json +++ b/src/localization/locales/hy.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "առաջարկվող", "translateVideo": "Թարգմանեք տեսանյութը", "disableTranslate": "Անջատել", diff --git a/src/localization/locales/id.json b/src/localization/locales/id.json index 4e24bbc1..fb8f2109 100644 --- a/src/localization/locales/id.json +++ b/src/localization/locales/id.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "direkomendasikan", "translateVideo": "Terjemahkan video", "disableTranslate": "Nonaktifkan", diff --git a/src/localization/locales/it.json b/src/localization/locales/it.json index 9bacff86..4196ed76 100644 --- a/src/localization/locales/it.json +++ b/src/localization/locales/it.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "consigliato", "translateVideo": "Traduci video", "disableTranslate": "Spegnere", diff --git a/src/localization/locales/ja.json b/src/localization/locales/ja.json index 1564ac4a..ddae116e 100644 --- a/src/localization/locales/ja.json +++ b/src/localization/locales/ja.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "おすすめ", "translateVideo": "動画を翻訳する", "disableTranslate": "オフにする", diff --git a/src/localization/locales/jv.json b/src/localization/locales/jv.json index 63a3778b..343a0b27 100644 --- a/src/localization/locales/jv.json +++ b/src/localization/locales/jv.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "disaranake", "translateVideo": "Translate vidéo", "disableTranslate": "Patèni", diff --git a/src/localization/locales/kk.json b/src/localization/locales/kk.json index 13bea6e5..bffe2f18 100644 --- a/src/localization/locales/kk.json +++ b/src/localization/locales/kk.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ұсынылады", "translateVideo": "Бейнені аудару", "disableTranslate": "Өшіру", diff --git a/src/localization/locales/km.json b/src/localization/locales/km.json index dcde62e9..e8feaa4e 100644 --- a/src/localization/locales/km.json +++ b/src/localization/locales/km.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "បានផ្ដល់ជាអនុសាសន៍", "translateVideo": "បកប្រែវីដេអូ", "disableTranslate": "បិទ", diff --git a/src/localization/locales/kn.json b/src/localization/locales/kn.json index 21cf2429..70c098a6 100644 --- a/src/localization/locales/kn.json +++ b/src/localization/locales/kn.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ", "translateVideo": "ವೀಡಿಯೊ ಭಾಷಾಂತರಿಸಿ", "disableTranslate": "ಆಫ್ ಮಾಡಿ", diff --git a/src/localization/locales/ko.json b/src/localization/locales/ko.json index 3bce6105..e7c78d85 100644 --- a/src/localization/locales/ko.json +++ b/src/localization/locales/ko.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "추천", "translateVideo": "비디오 번역", "disableTranslate": "끄기", diff --git a/src/localization/locales/lo.json b/src/localization/locales/lo.json index ec27d1bb..a5074252 100644 --- a/src/localization/locales/lo.json +++ b/src/localization/locales/lo.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ແນະນໍາ", "translateVideo": "ແປວິດີໂອ", "disableTranslate": "ປິດ", diff --git a/src/localization/locales/mk.json b/src/localization/locales/mk.json index 15dc39af..cd1898fb 100644 --- a/src/localization/locales/mk.json +++ b/src/localization/locales/mk.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "препорачано", "translateVideo": "Преведи видео", "disableTranslate": "Исклучи", diff --git a/src/localization/locales/ml.json b/src/localization/locales/ml.json index 5a498821..0d504580 100644 --- a/src/localization/locales/ml.json +++ b/src/localization/locales/ml.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ശുപാർശ", "translateVideo": "വീഡിയോ പരിഭാഷപ്പെടുത്തുക", "disableTranslate": "ഓഫ് ചെയ്യുക", diff --git a/src/localization/locales/mn.json b/src/localization/locales/mn.json index 151e217a..07aae0ba 100644 --- a/src/localization/locales/mn.json +++ b/src/localization/locales/mn.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "Зөвлөмж болгож байна", "translateVideo": "Видео орчуулах", "disableTranslate": "Унтраа", diff --git a/src/localization/locales/ms.json b/src/localization/locales/ms.json index c110b767..ce3f7c2d 100644 --- a/src/localization/locales/ms.json +++ b/src/localization/locales/ms.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "disyorkan", "translateVideo": "Terjemahkan video", "disableTranslate": "Matikan", diff --git a/src/localization/locales/mt.json b/src/localization/locales/mt.json index 5f9de5bc..0f8fa65d 100644 --- a/src/localization/locales/mt.json +++ b/src/localization/locales/mt.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "rakkomandat", "translateVideo": "Ittraduċi video", "disableTranslate": "Itfi", diff --git a/src/localization/locales/my.json b/src/localization/locales/my.json index eae33f5e..cd9a3f5b 100644 --- a/src/localization/locales/my.json +++ b/src/localization/locales/my.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "အကြံပြုထားသည်", "translateVideo": "ဗီဒီယိုဘာသာပြန်", "disableTranslate": "ပိတ်လိုက်ပါ", diff --git a/src/localization/locales/ne.json b/src/localization/locales/ne.json index e6bdc429..6d6dce2e 100644 --- a/src/localization/locales/ne.json +++ b/src/localization/locales/ne.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "सिफारिस गरिएको", "translateVideo": "भिडियो अनुवाद गर्नुहोस्", "disableTranslate": "बन्द गर्नुहोस्", diff --git a/src/localization/locales/nl.json b/src/localization/locales/nl.json index eb8fa54c..84e2530b 100644 --- a/src/localization/locales/nl.json +++ b/src/localization/locales/nl.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "aanbevolen", "translateVideo": "Video vertalen", "disableTranslate": "Uitgeschakeld", diff --git a/src/localization/locales/pa.json b/src/localization/locales/pa.json index dff3d073..d3673a74 100644 --- a/src/localization/locales/pa.json +++ b/src/localization/locales/pa.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "ਸਿਫਾਰਸ਼ੀ", "translateVideo": "ਵੀਡੀਓ ਅਨੁਵਾਦ ਕਰੋ", "disableTranslate": "ਬੰਦ ਕਰੋ", diff --git a/src/localization/locales/pl.json b/src/localization/locales/pl.json index d5eb2887..60c8381f 100644 --- a/src/localization/locales/pl.json +++ b/src/localization/locales/pl.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "zalecane", "translateVideo": "Przetłumacz wideo", "disableTranslate": "Wyłącz", diff --git a/src/localization/locales/pt.json b/src/localization/locales/pt.json index 0747380e..cfc40988 100644 --- a/src/localization/locales/pt.json +++ b/src/localization/locales/pt.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recomendado", "translateVideo": "Traduzir vídeo", "disableTranslate": "Desativar", diff --git a/src/localization/locales/ro.json b/src/localization/locales/ro.json index 4d378de3..2a5c8f9d 100644 --- a/src/localization/locales/ro.json +++ b/src/localization/locales/ro.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "recomandat", "translateVideo": "Traduceți videoclipul", "disableTranslate": "Dezactivare", diff --git a/src/localization/locales/si.json b/src/localization/locales/si.json index 099bbdc5..33e1755b 100644 --- a/src/localization/locales/si.json +++ b/src/localization/locales/si.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "නිර්දේශිත", "translateVideo": "වීඩියෝ පරිවර්තනය කරන්න", "disableTranslate": "අක් රිය කරන්න", diff --git a/src/localization/locales/sk.json b/src/localization/locales/sk.json index dc823640..61eebfa0 100644 --- a/src/localization/locales/sk.json +++ b/src/localization/locales/sk.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "Odporúčaný", "translateVideo": "Preložiť video", "disableTranslate": "Vypnúť", diff --git a/src/localization/locales/sl.json b/src/localization/locales/sl.json index cf29b472..bea99551 100644 --- a/src/localization/locales/sl.json +++ b/src/localization/locales/sl.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "priporočeno", "translateVideo": "Prevedi video", "disableTranslate": "Izklopite", diff --git a/src/localization/locales/sq.json b/src/localization/locales/sq.json index fa67e604..c35a4201 100644 --- a/src/localization/locales/sq.json +++ b/src/localization/locales/sq.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "rekomandohet", "translateVideo": "Përktheni videon", "disableTranslate": "Fikeni", diff --git a/src/localization/locales/sr.json b/src/localization/locales/sr.json index 87c5a4ce..aaf8bfff 100644 --- a/src/localization/locales/sr.json +++ b/src/localization/locales/sr.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "препоручено", "translateVideo": "Преведи видео", "disableTranslate": "Искључи", diff --git a/src/localization/locales/su.json b/src/localization/locales/su.json index 85a71946..fc54a4d2 100644 --- a/src/localization/locales/su.json +++ b/src/localization/locales/su.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "disarankeun", "translateVideo": "Narjamahkeun video", "disableTranslate": "Pareuman", diff --git a/src/localization/locales/sv.json b/src/localization/locales/sv.json index d6727248..2df0b33c 100644 --- a/src/localization/locales/sv.json +++ b/src/localization/locales/sv.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "Rekommenderad", "translateVideo": "Översätt video", "disableTranslate": "Stänga", diff --git a/src/localization/locales/sw.json b/src/localization/locales/sw.json index c40f855d..e0c17305 100644 --- a/src/localization/locales/sw.json +++ b/src/localization/locales/sw.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "imependekezwa", "translateVideo": "Tafsiri video", "disableTranslate": "Zima", diff --git a/src/localization/locales/tr.json b/src/localization/locales/tr.json index ce559d5f..9f8e9895 100644 --- a/src/localization/locales/tr.json +++ b/src/localization/locales/tr.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "önerilen", "translateVideo": "Videoyu çevir", "disableTranslate": "Kapat", diff --git a/src/localization/locales/uk.json b/src/localization/locales/uk.json index ad97892a..19aaa5bc 100644 --- a/src/localization/locales/uk.json +++ b/src/localization/locales/uk.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "рекомендований", "translateVideo": "Перекласти відео", "disableTranslate": "Вимкнути", diff --git a/src/localization/locales/ur.json b/src/localization/locales/ur.json index b87e9152..1d9988d5 100644 --- a/src/localization/locales/ur.json +++ b/src/localization/locales/ur.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "تجویز کیا", "translateVideo": "ویڈیو ترجمہ کریں", "disableTranslate": "برطرف کریں", diff --git a/src/localization/locales/uz.json b/src/localization/locales/uz.json index d7698230..62271d0d 100644 --- a/src/localization/locales/uz.json +++ b/src/localization/locales/uz.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "tavsiya", "translateVideo": "Videoni tarjima qiling", "disableTranslate": "O'chirish", diff --git a/src/localization/locales/vi.json b/src/localization/locales/vi.json index 0e60e5c9..d1b4b50e 100644 --- a/src/localization/locales/vi.json +++ b/src/localization/locales/vi.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "Được đề xuất", "translateVideo": "Dịch video", "disableTranslate": "Tắt", diff --git a/src/localization/locales/zh.json b/src/localization/locales/zh.json index f21a9590..c250bf5e 100644 --- a/src/localization/locales/zh.json +++ b/src/localization/locales/zh.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "推荐使用", "translateVideo": "翻译视频", "disableTranslate": "关闭", diff --git a/src/localization/locales/zu.json b/src/localization/locales/zu.json index 6ce9c9e5..c45cb741 100644 --- a/src/localization/locales/zu.json +++ b/src/localization/locales/zu.json @@ -1,5 +1,5 @@ { - "__version__": 2, + "__version__": 3, "recommended": "kunconywa", "translateVideo": "Humusha ividiyo", "disableTranslate": "Cisha", From ad9ff15622f269916df6066c83419aa3312394b7 Mon Sep 17 00:00:00 2001 From: Toil Date: Wed, 27 Dec 2023 11:30:07 +0300 Subject: [PATCH 10/10] builded --- .gitignore | 1 + changelog.md | 3 +++ dist/vot-cloudflare-min.user.js | 4 ++-- dist/vot-cloudflare.user.js | 21 ++++++++++++++------- dist/vot-min.user.js | 4 ++-- dist/vot.user.js | 21 ++++++++++++++------- src/headers.json | 2 +- 7 files changed, 37 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index cfbe399b..b56d4952 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ src/localization/locales/generate_phrase.py src/localization/locales/regenerate_locales.py +src/localization/locales/remove_phrase.py .vscode .pytest_cache diff --git a/changelog.md b/changelog.md index 2f7c1e48..d30294eb 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,6 @@ +# 1.5.0.2 +- Улучшена очистка описания на Youtube от @SashaXser в #46 + # 1.5.0.1 - Фикс работы с Chromium <88 и Firefox<86. В этих браузерах (для Cent Browser и других старых браузеров) diff --git a/dist/vot-cloudflare-min.user.js b/dist/vot-cloudflare-min.user.js index 291716c2..a30bd2ff 100644 --- a/dist/vot-cloudflare-min.user.js +++ b/dist/vot-cloudflare-min.user.js @@ -13,7 +13,7 @@ // @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser // @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры // @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译 -// @version 1.5.0.1 +// @version 1.5.0.2 // @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD // @supportURL https://github.com/ilyhalight/voice-over-translation/issues // @match *://*.youtube.com/* @@ -121,4 +121,4 @@ // ==/UserScript== /*! For license information please see vot-cloudflare-min.js.LICENSE.txt */ -(()=>{var t={"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[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}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var c=s.default.find(r,(function(t){return e.isPlatform(t)}));if(c){var u=this.satisfies(o[c]);if(void 0!==u)return u}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{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(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{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(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{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(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss":(t,e,o)=>{"use strict";o.d(e,{Z:()=>s});var n=o("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),i=o.n(n),a=o("./node_modules/css-loader/dist/runtime/api.js"),r=o.n(a)()(i());r.push([t.id,'.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) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer;transition:box-shadow .2s}.vot-button[hidden]{display:none !important}.vot-button::-moz-focus-inner{border:none}.vot-button::before,.vot-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-button::before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.vot-button:hover::before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.vot-button:active::after{opacity:.32;background-size:100% 100%;transition:background-size 0s}.vot-button:disabled{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.12);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);box-shadow:none;cursor:initial}.vot-button:disabled::before,.vot-button:disabled::after{opacity:0}.vot-outlined-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:solid 1px;border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.24);border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:34px;outline:none;cursor:pointer}.vot-outlined-button[hidden]{display:none !important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button::before,.vot-outlined-button::after{content:"";position:absolute;border-radius:3px;top:0;right:0;bottom:0;left:0;opacity:0}.vot-outlined-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-outlined-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-outlined-button:disabled::before,.vot-outlined-button:disabled::after{opacity:0}.vot-text-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:4px;padding:0 8px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-text-button[hidden]{display:none !important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button::before,.vot-text-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-text-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-text-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-text-button:disabled::before,.vot-text-button:disabled::after{opacity:0}.vot-icon-button{--vot-helper-onsurface: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:50%;padding:0;width:36px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-icon-button[hidden]{display:none !important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button::before,.vot-icon-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-icon-button::before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s,opacity 0s}.vot-icon-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);fill:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-icon-button:disabled::before,.vot-icon-button:disabled::after{opacity:0}.vot-textfield{--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), 0.38 ) !important;--vot-helper-safari2: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari3: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;position:relative !important;display:inline-block;padding-top:6px !important;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-textfield[hidden]{display:none !important}.vot-textfield>input,.vot-textfield>textarea{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:0 !important;border-style:solid !important;border-width:1px !important;border-color:rgba(0,0,0,0) var(--vot-helper-safari2) var(--vot-helper-safari2) !important;border-radius:4px !important;padding:15px 13px 15px !important;width:100% !important;height:inherit !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;-webkit-text-fill-color:currentColor !important;background-color:rgba(0,0,0,0) !important;box-shadow:inset 1px 0 rgba(0,0,0,0),inset -1px 0 rgba(0,0,0,0),inset 0 -1px rgba(0,0,0,0) !important;font-family:inherit !important;font-size:inherit !important;line-height:inherit !important;caret-color:var(--vot-helper-theme) !important;transition:border .2s,box-shadow .2s !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{position:absolute !important;top:0 !important;left:0 !important;display:flex !important;width:100% !important;max-height:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;font-size:75% !important;line-height:15px !important;cursor:text !important;transition:color .2s,font-size .2s,line-height .2s !important;pointer-events:none !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;display:block !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin-top:6px !important;border-top:solid 1px var(--vot-helper-safari2) !important;min-width:10px !important;height:8px !important;pointer-events:none !important;box-shadow:inset 0 1px rgba(0,0,0,0) !important;transition:border .2s,box-shadow .2s !important}.vot-textfield>input+span::before,.vot-textfield>textarea+span::before{margin-right:4px !important;border-left:solid 1px rgba(0,0,0,0) !important;border-radius:4px 0 !important}.vot-textfield>input+span::after,.vot-textfield>textarea+span::after{flex-grow:1 !important;margin-left:4px !important;border-right:solid 1px rgba(0,0,0,0) !important;border-radius:0 4px !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:rgba(0,0,0,0) !important}.vot-textfield:hover>input,.vot-textfield:hover>textarea{border-color:rgba(0,0,0,0) var(--vot-helper-safari3) var(--vot-helper-safari3) !important}.vot-textfield:hover>input+span::before,.vot-textfield:hover>input+span::after,.vot-textfield:hover>textarea+span::before,.vot-textfield:hover>textarea+span::after{border-top-color:var(--vot-helper-safari3) !important}.vot-textfield:hover>input:not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3) !important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:rgba(0,0,0,0) 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:rgba(0,0,0,0) var(--vot-helper-safari1) var(--vot-helper-safari1) !important;color:rgba(var(--vot-onsurface-rgb, 0, 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{border-top-color:var(--vot-helper-safari1) !important}.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:rgba(0,0,0,0) !important}@media not all and (min-resolution: 0.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;position:relative;display:inline-block;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-checkbox[hidden]{display:none !important}.vot-checkbox>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:1;position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:3px 1px;border:solid 2px;background:rgba(0,0,0,0);border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6);border-radius:2px;width:18px;height:18px;outline:none;cursor:pointer;transition:border-color .2s,background-color .2s}.vot-checkbox>input+span{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-left:30px;width:inherit;cursor:pointer}.vot-checkbox>input+span::before{content:"";position:absolute;left:-10px;top:-8px;display:block;border-radius:50%;width:40px;height:40px;background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0));opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s,transform .2s}.vot-checkbox>input+span::after{content:"";z-index:1;display:block;position:absolute;top:3px;left:1px;-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important;width:10px;height:5px;border:solid 2px rgba(0,0,0,0);border-right-width:0;border-top-width:0;pointer-events:none;transform:translate(3px, 4px) rotate(-45deg);transition:border-color .2s}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.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))}.vot-checkbox>input:indeterminate+span::after{border-left-width:0;transform:translate(4px, 3px)}.vot-checkbox:hover>input+span::before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6)}.vot-checkbox:active>input+span::before{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38)}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled+span::before{opacity:0;transform:scale(0)}.vot-slider{--vot-safari-helper1: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.04 ) !important;--vot-safari-helper2: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.12 ) !important;--vot-safari-helper3: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.16 ) !important;--vot-safari-helper4: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.24 ) !important;display:inline-block;width:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;font-family:var(--vot-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-slider[hidden]{display:none !important}.vot-slider>input{-webkit-appearance:none !important;appearance:none !important;position:relative !important;top:24px !important;display:block !important;margin:0 0 -36px !important;width:100% !important;height:36px !important;background-color:rgba(0,0,0,0) !important;cursor:pointer !important}.vot-slider>input:last-child{position:static !important;margin:0 !important}.vot-slider>span{display:inline-block !important;margin-bottom:36px !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), 0.38) !important}.vot-slider>input::-webkit-slider-runnable-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-webkit-slider-thumb{margin:0 !important;appearance:none !important;-webkit-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1) !important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4) !important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0)) !important;color:rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;transform:scale(4, 4) !important}.vot-slider>input::-moz-range-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-moz-range-thumb{appearance:none !important;-moz-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider>input::-moz-range-progress{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !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, 4) !important}.vot-slider>input::-moz-focus-outer{border:none !important}.vot-slider>input::-ms-track{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:17px 0 !important;border:none !important;border-radius:1px !important;padding:0 17px !important;width:100% !important;height:2px !important;background-color:rgba(0,0,0,0) !important}.vot-slider>input::-ms-fill-lower{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider>input::-ms-fill-upper{border-radius:1px !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-ms-thumb{appearance:none !important;margin:0 17px !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important;opacity:.38 !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, 4) !important}.vot-slider>input::before{content:"" !important;display:block !important;position:absolute !important;width:calc(100%*var(--vot-progress, 0)) !important;height:2px !important;top:calc(50% - 1px) !important;background:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0) !important;--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87) !important;--vot-helper-safari1: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari2: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;display:flex;align-items:center;justify-content:space-between;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;line-height:1.5;text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-select[hidden]{display:none !important}.vot-select-label{font-size:16px}.vot-select-outer{display:flex;align-items:center;justify-content:space-between;max-width:120px;width:120px;padding:0 5px;border-style:solid !important;border-width:1px !important;border-color:var(--vot-helper-safari1) !important;border-radius:4px !important;cursor:pointer;transition:border .2s !important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2) !important}.vot-select-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vot-select-arrow-icon{width:20px;height:32px;display:flex;justify-content:center;align-items:center}.vot-select-content-list{display:flex;flex-direction:column}.vot-select-content-list .vot-select-content-item{padding:5px 10px;border-radius:8px;cursor:pointer}.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), 0.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.1) !important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none !important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-weight:bold;line-height:1.5;text-align:start}.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{display:flex;color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-info[hidden]{display:none !important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb), 0.5);flex:1;margin-left:8px}.vot-lang-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);display:flex;align-items:center;justify-content:space-between;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-lang-select[hidden]{display:none !important}.vot-lang-select-icon{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.vot-segmented-button{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);overflow:hidden;position:absolute;left:50%;top:5rem;transform:translate(-50%);user-select:none;display:flex;align-items:center;height:32px;max-width:100vw;background:rgb(var(--vot-surface-rgb, 255, 255, 255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);border-radius:4px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;cursor:default;transition:opacity .5s;z-index:100}.vot-segmented-button[hidden]{display:none !important}.vot-segmented-button *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-segmented-button .vot-separator{width:1px;height:50%;background:rgba(var(--vot-helper-theme-rgb), 0.1)}.vot-segmented-button .vot-separator[hidden]{display:none !important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;height:100%;padding:0 8px;background-color:rgba(0,0,0,0);color:inherit;transition:background-color 100ms ease-in-out;border:none}.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:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.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 at center, currentColor 1%, transparent 1%) center/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 0s}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{margin-left:8px;white-space:nowrap}.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 svg{width:fit-content}.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), 0.87);overflow:hidden;position:absolute;left:50%;top:calc(5rem + 32px + 16px);user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);border-radius:8px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;min-width:300px;cursor:default;z-index:100;visibility:visible;opacity:1;transform-origin:top;transform:translate(-50%) scale(1);transition:opacity .3s,transform .1s}.vot-menu *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-menu[hidden]{pointer-events:none;display:block !important;pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%) scale(0)}.vot-menu-content-wrapper{display:flex;flex-direction:column;min-height:100px;max-height:calc(var(--vot-container-height, 75vh) - (5rem + 32px + 16px)*2);overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-menu-header-container:empty{padding:0 0 16px 0}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0;text-align:start}.vot-menu-title{flex:1;font-size:16px;line-height:1;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 16px;gap:8px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar,.vot-menu-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-footer-container:empty{padding:16px 0 0 0}.vot-dialog-container{visibility:visible;position:absolute;z-index:10000}.vot-dialog-container[hidden]{display:block !important;pointer-events:none;visibility:hidden}.vot-dialog-container *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-dialog-backdrop{background-color:rgba(0,0,0,.6);position:fixed;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .3s}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.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), 0.87);display:block;position:fixed;top:50%;bottom:50%;max-width:initial;max-height:initial;width:min(var(--vot-dialog-width, 512px),100%);height:fit-content;inset-inline-start:0px;inset-inline-end:0px;inset-block-start:0px;inset-block-end:0px;border-radius:8px;margin:auto;padding:0;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);box-shadow:0 0 16px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.24);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;user-select:none;visibility:visible;overflow:auto;overflow-y:hidden;opacity:1;transform-origin:center;transform:scale(1);transition:opacity .3s,transform .1s}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transform:scale(0.5);transition:opacity .1s,transform .2s}.vot-dialog-content-wrapper{display:flex;flex-direction:column;max-height:75vh;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-dialog-header-container:empty{padding:0 0 20px 0}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0}.vot-dialog-title{flex:1;font-size:115.3846153846%;font-weight:bold;line-height:1;padding-bottom:16px;padding-inline-end:20px;padding-inline-start:20px;padding-top:20px}.vot-dialog-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 20px;gap:16px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar,.vot-dialog-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-dialog-footer-container:empty{padding:20px 0 0 0}.vot-subtitles-widget{display:flex;justify-content:center;align-items:center;position:absolute;width:50%;max-height:100%;min-height:20%;z-index:100;left:25%;top:75%;pointer-events:none}.vot-subtitles{position:relative;max-width:100%;max-height:100%;width:max-content;background:var(--vot-subtitles-background, rgba(46, 47, 52, 0.8));color:var(--vot-subtitles-color, rgb(227, 227, 227));border-radius:1rem;pointer-events:all;padding:1rem;font-size:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color, rgb(33, 150, 243))}:root{--vot-font-family: "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system;--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-background: rgba(var(--vot-surface-rgb, 46, 47, 52), 0.8);--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{display:block}',""]);const s=r},"./node_modules/css-loader/dist/runtime/api.js":t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o="",n=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),n&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=t(e),n&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(t,o,n,i,a){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(n)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),o&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=o):c[2]=o),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},"./node_modules/css-loader/dist/runtime/noSourceMaps.js":t=>{"use strict";t.exports=function(t){return t[1]}},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":t=>{"use strict";var e=[];function o(t){for(var o=-1,n=0;n{"use strict";var e={};t.exports=function(t,o){var n=function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}e[t]=o}return e[t]}(t);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(t,e,o)=>{"use strict";t.exports=function(t){var e=o.nc;e&&t.setAttribute("nonce",e)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(o){!function(t,e,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(n,t,e.options)}(e,t,o)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},"./src/config/config.js":(t,e,o)=>{"use strict";o.d(e,{EY:()=>c,I1:()=>r,Rr:()=>s,e6:()=>i,ez:()=>a,jm:()=>u,kF:()=>d,rm:()=>h,sN:()=>l});var n=o("./src/utils/utils.js");const i="m3u8proxy.toil-dump.workers.dev",a="uk"===n.KQ?"vot-new.toil-dump.workers.dev":"vot.deno.dev",r="xtGCyGdTY2Jy6OMEKdTuXev3Twhkamgm",s="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36",l=.15,d="yandex",c="yandex",u={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},h={yandex:"https://translate.toil.cc/translate"}},"./src/localization/localizationProvider.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>r,V:()=>s});const n=JSON.parse('{"__version__":2,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTFailedInitDB":"Failed to initialize database","VOTDBNeedUpdate":"The database needs an update, please reload the page","VOTDisabledForDBUpdating":"VOT is disabled due to an error when updating the Database. Close all open tabs with {0} and try again","VOTFailedWriteToDB":"Data could not be written to the database","VOTFailedReadFromDB":"Data could not be retrieved from the database","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","VOTCloudflareDoesntSupportStreams":"The Cloudflare version of the script does not support stream translation","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}');var i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=["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"],s=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=a.i.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(a.i.syncGet("locale-phrases",""))}reset(){this.gmValues.forEach((t=>a.i.syncDelete(t)))}async update(t=!1){(t||2!==await a.i.get("locale-version",0,!0)||await a.i.get("locale-lang")!==this.lang)&&(i.Z.log("Updating locale..."),await fetch(`https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/src/localization/locales/${this.lang}.json`).then((t=>{if(200===t.status)return t.text();throw t.status})).then((async t=>{await a.i.set("locale-phrases",t),this.setLocaleFromJsonString(t);const e=this.getFromLocale(this.locale,"__version__");"number"==typeof e&&await a.i.set("locale-version",e),await a.i.set("locale-lang",this.lang)})).catch((async t=>{console.error("[VOT] [localizationProvider] failed get locale, cause:",t),this.setLocaleFromJsonString(await a.i.get("locale-phrases",""))})))}setLocaleFromJsonString(t){try{this.locale=JSON.parse(t)??{}}catch(t){console.error("[VOT] [localizationProvider]",t),this.locale={}}}getFromLocale(t,e){const o=e.split(".").reduce(((t,e)=>{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(n,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(n,t)??t}}},"./src/utils/debug.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>n});const n={log:(...t)=>{}}},"./src/utils/storage.js":(t,e,o)=>{"use strict";o.d(e,{i:()=>i});var n=o("./src/utils/debug.js");const i=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,n.Z.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);let n=window.localStorage.getItem(t);if("udemyData"===t&&"string"==typeof n)try{n=JSON.parse(n)}catch{n=e}return o?Number(n)??Number(e):n??e}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):new Promise((n=>{n(this.syncGet(t,e,o))}))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):("udemyData"===t&&(e=JSON.stringify(e)),window.localStorage.setItem(t,e))}async set(t,e){return this.gmSupport?await GM_setValue(t,e):new Promise((o=>{o(this.syncSet(t,e))}))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):new Promise((e=>{e(this.syncDelete(t))}))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","udemyData","audioProxy","showPiPButton","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():new Promise((t=>{t(this.syncList())}))}}},"./src/utils/utils.js":(t,e,o)=>{"use strict";o.d(e,{KQ:()=>a,PG:()=>l,QZ:()=>u,_v:()=>r,eL:()=>d,gJ:()=>s,qq:()=>c});var n=o("./src/localization/localizationProvider.js");const i=navigator.language||navigator.userLanguage,a=i?.substr(0,2)?.toLowerCase()??"en";String.prototype.format||(String.prototype.format=function(){var t=arguments;return this.replace(/{(\d+)}/g,(function(e,o){return void 0!==t[o]?t[o]:e}))});const r=t=>new Promise((e=>setTimeout(e,t))),s=(t,e)=>{const o=new URL(window.location.href);switch(t){case"piped":case"invidious":case"youtube":return o.pathname.match(/(?:watch|embed|shorts)\/([^/]+)/)?.[1]||o.searchParams.get("v");case"vk":return o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)?o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)[0].slice(1):o.searchParams.get("z")?o.searchParams.get("z").split("/")[0]:!(!o.searchParams.get("oid")||!o.searchParams.get("id"))&&`video-${Math.abs(o.searchParams.get("oid"))}_${o.searchParams.get("id")}`;case"nine_gag":case"9gag":case"gag":return o.pathname.match(/gag\/([^/]+)/)?.[1];case"twitch":if(/^m\.twitch\.tv$/.test(window.location.hostname)){const t=document.head.querySelector('link[rel="canonical"]');return t?.href.match(/videos\/([^/]+)/)?.[0]||o.pathname.slice(1)}if(/^player\.twitch\.tv$/.test(window.location.hostname))return`videos/${o.searchParams.get("video")}`;if(/^clips\.twitch\.tv$/.test(window.location.hostname)){const t=document.querySelector(".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']");return!!t&&`${t.href.replace("https://www.twitch.tv/","")}/clip/${o.searchParams.get("clip")}`}return o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)?o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)[0]:o.pathname.match(/(?:videos)\/([^/]+)/)?.[0];case"proxytok":return o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];case"tiktok":{let t=o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];if(!t){const o=e.closest(".xgplayer-playing, .tiktok-web-player"),n=o?.closest('div[data-e2e="recommend-list-item-container"]'),i=n?.querySelector('a[data-e2e="video-author-avatar"]');if(o&&i){const e=o.id?.match(/^xgwrapper-[0-9]+-(.*)$/)?.at(1),n=i.href?.match(/.*(@.*)$/)?.at(1);e&&n&&(t=`${n}/video/${e}`)}}return t}case"vimeo":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0]||o.pathname.match(/[^/]+$/)?.[0];case"xvideos":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0];case"pornhub":return o.searchParams.get("viewkey")||o.pathname.match(/embed\/([^/]+)/)?.[1];case"twitter":return o.pathname.match(/status\/([^/]+)/)?.[1];case"udemy":case"rumble":return o.pathname;case"facebook":return!!o.searchParams.get("v")&&o.searchParams.get("v");case"rutube":return o.pathname.match(/(?:video|embed)\/([^/]+)/)?.[1];case"coub":return o.pathname.includes("/view")?o.pathname.match(/view\/([^/]+)/)?.[1]:o.pathname.includes("/embed")?o.pathname.match(/embed\/([^/]+)/)?.[1]:document.querySelector(".coub.active")?.dataset?.permalink;case"bilibili":{const t=o.searchParams.get("bvid");if(t)return t;{let t=o.pathname.match(/video\/([^/]+)/)?.[1];return t&&o.search&&null!==o.searchParams.get("p")&&(t+=`/?p=${o.searchParams.get("p")}`),t}}case"mail_ru":if(o.pathname.startsWith("/v/")||o.pathname.startsWith("/mail/"))return o.pathname;if(o.pathname.match(/video\/embed\/([^/]+)/)){const t=document.querySelector(".b-video-controls__mymail-link");return!!t&&t?.href.split("my.mail.ru")?.[1]}return!1;case"bitchute":return o.pathname.match(/video\/([^/]+)/)?.[1];case"coursera":return o.pathname.match(/learn\/([^/]+)\/lecture\/([^/]+)/)?.[0];case"eporner":return o.pathname.match(/video-([^/]+)\/([^/]+)/)?.[0];case"peertube":return o.pathname.match(/\/w\/([^/]+)/)?.[0];case"dailymotion":{const t=Array.from(document.scripts).filter((t=>t.innerText.trim().includes("window.__PLAYER_CONFIG__ = {")));if(!t.length)return!1;try{let e=t[0].innerText.trim().replace("window.__PLAYER_CONFIG__ = ","");e.endsWith("};")&&(e=e.substring(0,e.length-1));const o=JSON.parse(e),n=o.context.embedder??o.context.http_referer;return console.log(n,o),n.match(/\/video\/([^/]+)/)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case"trovo":{if(!o.pathname.startsWith("/s/"))return!1;const t=o.searchParams.get("vid");if(!t)return!1;const e=o.pathname.match(/([^/]+)\/([\d]+)/)?.[0];return!!e&&`${e}?vid=${t}`}case"yandexdisk":return o.pathname.match(/\/[i|s|d]\/([^/]+)/)?.[1];default:return!1}};function l(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?n.V.get("translationTakeMoreThanHour"):e>=10&&e%10?n.V.get("translationTakeApproximatelyMinutes").format(e):1==e||0==e&&o>0?n.V.get("translationTakeAboutMinute"):n.V.get("translationTakeApproximatelyMinute").format(e)}function d(t){return t.toLowerCase().split(";")[0].trim().split("-")[0].split("_")[0]}function c(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function u(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}},"./src/yandexRequest-cloudflare.js":(t,e,o)=>{"use strict";o.r(e),o.d(e,{default:()=>r});var n=o("./src/config/config.js"),i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=async function(t,e,o,r){let s,l;try{i.Z.log("yandexRequest:",t);const r={method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({headers:{Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf","User-Agent":n.Rr,Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors",...o},body:Array.from(e)})},d=await a.i.get("proxyWorkerHost",n.ez);s=await fetch(`https://${d}${t}`,r),i.Z.log("yandexRequest:",s.status,s),l=await s.arrayBuffer()}catch(t){console.error("[VOT]",t),s={status:-1},l=t}r(200==s.status,l)}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={id:n,exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nc=void 0,(()=>{"use strict";var t=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),e=o.n(t),n=o("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),i=o.n(n),a=o("./node_modules/style-loader/dist/runtime/insertBySelector.js"),r=o.n(a),s=o("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),l=o.n(s),d=o("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),c=o.n(d),u=o("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),h=o.n(u),p=o("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss"),g={};g.styleTagTransform=h(),g.setAttributes=l(),g.insert=r().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=c(),e()(p.Z,g),p.Z&&p.Z.locals&&p.Z.locals;var v=o("./src/localization/localizationProvider.js");class m extends Error{constructor(t){super(v.V.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=v.V.get(t)}}var b=o("./src/utils/debug.js");const f=["ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],y=["kk","bn","pt","cs","hi","mr","te","tr","ms","vi","ta","jv","ur","fa","gu","id","uk","da","fi","uz","pl","sv","az","sq","am","hy","af","eu","my","bg","bs","cy","hu","gl","el","zu","kn","ca","km","lo","mk","ml","mt","mn","ne","nl","pa","ro","sr","si","sk","sl","sw","su","hr","et"],w=["ru","en","kk"];var x=o("./src/utils/utils.js"),S=o("./src/config/config.js"),k=o("./src/utils/storage.js");async function T(t,e){const o=new AbortController,n=setTimeout((()=>o.abort()),3e3);try{return await fetch(t,{...e,signal:o.signal})}catch(t){return console.error("Fetch timed-out. Error:",t),t}finally{clearTimeout(n)}}const V={async translate(t,e){try{const o=await T(S.rm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t,e){try{const o=await T(S.jm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.lang??"en"}catch(t){return console.error("Error translating text:",t),"en"}}},M={async detect(t){try{const e=await fetch(S.jm.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}};async function L(t,e="",o="ru"){if("yandex"===await k.i.get("translationService",S.kF)){const n=e&&o?`${e}-${o}`:o;return await V.translate(t,n)}return t}const O=["yandex"],P=["yandex","rust-server"];function E(){return/^m\.youtube\.com$/.test(window.location.hostname)}function C(){return window.location.pathname.startsWith("/shorts/")?E()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function A(){const t=C();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function B(){const t=C();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const F=function(){const t=C();return t?.getVolume?t.getVolume.call()/100:1},_=function(){const t=A();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?(0,x.eL)(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),b.Z.log("youtube subtitles:",e),e},q=async function(){const t=C(),e=A(),o=B(),{author:n,title:i}=o??{},{shortDescription:a,isLive:r,isLiveContent:s,isUpcoming:l}=e?.videoDetails??{},d=!(!r&&!l||s);let c=await async function(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return(0,x.eL)(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return(0,x.eL)(t.languageCode)}if(!n||!o)return"en";const a=[n.split("\n").filter((t=>!t.match(/https?:\/\/\S+/))).join("\n").replace(/#\S+/g,"").replace(/[^\p{L}\s]/gu,"").replace(/\s+/g," ").trim().slice(0,250),o].join("");return await async function(t){switch(await k.i.get("detectService",S.EY)){case"yandex":return await V.detect(t);case"rust-server":return await M.detect(t);default:return"en"}}(a)}(t,e,i,a);f.includes(c)||(c="en");const u={isLive:!!r,isPremiere:d,title:i,description:a,author:n,detectedLanguage:c};return b.Z.log("youtube video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},R=function(t){const e=C();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},z=function(t,e){b.Z.log("videoSeek",e);const o=(C()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},D=new protobuf.Type("VideoTranslationHelpObject").add(new protobuf.Field("target",1,"string")).add(new protobuf.Field("targetUrl",2,"string")),I=new protobuf.Type("VideoTranslationRequest").add(new protobuf.Field("url",3,"string")).add(new protobuf.Field("deviceId",4,"string")).add(new protobuf.Field("firstRequest",5,"bool")).add(new protobuf.Field("duration",6,"double")).add(new protobuf.Field("unknown2",7,"int32")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("unknown3",9,"int32")).add(new protobuf.Field("unknown4",10,"int32")).add(new protobuf.Field("translationHelp",11,"VideoTranslationHelpObject","repeated")).add(new protobuf.Field("responseLanguage",14,"string")).add(new protobuf.Field("unknown5",15,"int32")),j=new protobuf.Type("VideoSubtitlesRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")),N=new protobuf.Type("VideoStreamRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")).add(new protobuf.Field("responseLanguage",3,"string")),$=new protobuf.Type("VideoStreamPingRequest").add(new protobuf.Field("pingId",1,"int32")),H=new protobuf.Type("VideoTranslationResponse").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("duration",2,"double")).add(new protobuf.Field("status",4,"int32")).add(new protobuf.Field("remainingTime",5,"int32")).add(new protobuf.Field("unknown0",6,"int32")).add(new protobuf.Field("unknown1",7,"string")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("message",9,"string")),Z=new protobuf.Type("VideoSubtitlesObject").add(new protobuf.Field("language",1,"string")).add(new protobuf.Field("url",2,"string")).add(new protobuf.Field("unknown2",3,"int32")).add(new protobuf.Field("translatedLanguage",4,"string")).add(new protobuf.Field("translatedUrl",5,"string")).add(new protobuf.Field("unknown5",6,"int32")).add(new protobuf.Field("unknown6",7,"int32")),U=new protobuf.Type("VideoSubtitlesResponse").add(new protobuf.Field("unknown0",1,"int32")).add(new protobuf.Field("subtitles",2,"VideoSubtitlesObject","repeated")),W=new protobuf.Type("VideoStreamObject").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("timestamp",2,"int64")),G=new protobuf.Type("VideoStreamResponse").add(new protobuf.Field("interval",1,"int32")).add(new protobuf.Field("translatedInfo",2,"VideoStreamObject")).add(new protobuf.Field("pingId",3,"int32")),Y=(new protobuf.Root).define("yandex").add(D).add(I).add(H).add(j).add(Z).add(U).add($).add(N).add(W).add(G),K=(t,e,o,n,i)=>Y.VideoTranslationRequest.encode({url:t,firstRequest:!0,duration:e,unknown2:1,language:o,unknown3:0,unknown4:0,translationHelp:i,responseLanguage:n,unknown5:0}).finish(),Q=t=>Y.VideoTranslationResponse.decode(new Uint8Array(t)),J=(t,e)=>Y.VideoSubtitlesRequest.encode({url:t,language:e}).finish(),X=t=>Y.VideoSubtitlesResponse.decode(new Uint8Array(t)),tt=t=>Y.VideoStreamPingRequest.encode({pingId:t}).finish(),et=(t,e,o)=>Y.VideoStreamRequest.encode({url:t,language:e,responseLanguage:o}).finish(),ot=t=>Y.VideoStreamResponse.decode(new Uint8Array(t)),nt=["invidious.snopyta.org","yewtu.be","invidious.kavin.rocks","vid.puffyan.us","invidious.namazso.eu","inv.riverside.rocks","yt.artemislena.eu","invidious.flokinet.to","invidious.esmailelbob.xyz","y.com.sb","invidious.nerdvpn.de","inv.vern.cc","invidious.slipfox.xyz","invidio.xamh.de","invidious.dhusch.de"],it=["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"];function at(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),e.innerHTML=t,e}function rt(t){const e=parseFloat(t.value),o=""===t.min?0:parseFloat(t.min),n=(e-o)/((""===t.max?100:parseFloat(t.max))-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function st(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),{container:i,input:a,label:r}}function lt(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=at('');d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const c=document.createElement("vot-block");return c.classList.add("vot-dialog-title"),c.innerHTML=t,e.appendChild(o),e.appendChild(n),n.appendChild(i),i.appendChild(a),i.appendChild(r),i.appendChild(s),a.appendChild(l),a.appendChild(d),l.appendChild(c),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:c}}function dt(t,e,o,n={}){const i=n.onSelectCb||function(){},a=n.labelElement||"";let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.appendChild(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.innerText=t,void 0===t&&(d.innerText=o.find((t=>!0===t.selected))?.label);const c=document.createElement("vot-block");return c.classList.add("vot-select-arrow-icon"),c.innerHTML='',l.append(d,c),l.onclick=()=>{const t=lt(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.innerText=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{a.target.inert||(n.childNodes.forEach((t=>t.dataset.votSelected=!1)),o.forEach((e=>e.selected=e.value===t.value)),e.dataset.votSelected=!0,d.innerText=t.label,await i(a))},n.appendChild(e)}const a=st(v.V.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();Array.from(r).forEach((t=>t.hidden=!t.innerText.toLowerCase().includes(e)))},t.bodyContainer.append(a.container,n),r=n.childNodes,t.backdrop.onclick=t.closeButton.onclick=()=>{t.container.remove(),r=[]}},s.append(l),{container:s,title:d,arrowIcon:c,labelElement:a,setTitle:t=>{d.innerText=t},setSelected:t=>{Array.from(r).filter((t=>!t.inert)).forEach((e=>e.dataset.votSelected=e.dataset.votValue===t)),o.forEach((e=>e.selected=String(e.value)===t))},updateItems:t=>{o=t}}}const ct={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.innerHTML=t,o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.innerHTML=t;const i=document.createElement("vot-block");return i.innerHTML=e,o.appendChild(n),o.appendChild(i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.innerHTML=t,e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.innerHTML=t,e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.innerHTML=t,e},createIconButton:at,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.innerHTML=t,o.appendChild(n),o.appendChild(i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),a.addEventListener("input",(t=>rt(t.target))),rt(a),{container:i,input:a,label:r}},createTextfield:st,createDialog:lt,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),o.innerHTML='';const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),i.innerHTML='';const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),r.innerHTML='';const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.innerHTML=t,e.appendChild(o),e.appendChild(n),e.appendChild(i),e.appendChild(a),e.appendChild(r),o.appendChild(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.innerHTML=t,e.appendChild(o),o.appendChild(n),o.appendChild(i),o.appendChild(a),n.appendChild(r),r.appendChild(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.innerText=t,e},createVOTSelect:dt,createVOTLanguageSelect:function(t){const e=t.fromTitle||"#UNDEFINED",o=t.fromDialogTitle||"#UNDEFINED",n=t.fromItems||[],i=t.fromOnSelectCB||function(){},a=t.toTitle||"#UNDEFINED",r=t.toDialogTitle||"#UNDEFINED",s=t.toItems||[],l=t.toOnSelectCB||function(){},d=document.createElement("vot-block");d.classList.add("vot-lang-select");const c=dt(e,o,n,{onSelectCb:i}),u=document.createElement("vot-block");u.classList.add("vot-lang-select-icon"),u.innerHTML='';const h=dt(a,r,s,{onSelectCb:l});return d.append(c.container,u,h.container),{container:d,fromSelect:c,icon:u,toSelect:h}},updateSlider:rt};function ut(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}var ht=o("./node_modules/bowser/es5.js");function pt(t){const e=([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)));return t?e:e.toUpperCase()}async function gt(t){const e=new TextEncoder("utf-8"),o=await window.crypto.subtle.importKey("raw",e.encode(S.I1),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),n=await window.crypto.subtle.sign("HMAC",o,t);return Array.from(new Uint8Array(n),(t=>t.toString(16).padStart(2,"0"))).join("")}function vt(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1],r=o[o.length-1],s=r?.alignRange?.end??0,l=s+n.text.length;if(o.push(Object.assign(Object.assign({},n),{alignRange:{start:s,end:l}})),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function mt(t,e){const o=t.text.split(new RegExp("([\n \t])")).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a,l=r?i-s:n;return Object.assign(Object.assign({},e),{startMs:s,durationMs:l})}))}class bt{dragging=!1;subtitlesContainerRect=null;containerRect=null;offsetX=null;offsetY=null;lastContent=null;highlightWords=!1;subtitles=null;maxLength=300;maxLengthRegexp=/.{1,300}(?:\s|$)/g;constructor(t,e,o){this.site=o,this.video=t,"youtube"===this.site.host&&"mobile"!==this.site.additionalData?this.container=e.parentElement:this.container=e,this.votSubtitlesContainer=document.createElement("vot-block"),this.votSubtitlesContainer.classList.add("vot-subtitles-widget"),this.container.appendChild(this.votSubtitlesContainer),this.onMouseDownBound=this.onMouseDown.bind(this),this.onMouseUpBound=this.onMouseUp.bind(this),this.onMouseMoveBound=this.onMouseMove.bind(this),this.onTimeUpdateBound=this.onTimeUpdate.bind(this),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound)}release(){this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.votSubtitlesContainer.remove()}onMouseDown(t){this.votSubtitlesContainer.contains(t.target)&&(this.subtitlesContainerRect=this.votSubtitlesContainer.getBoundingClientRect(),this.containerRect=this.container.getBoundingClientRect(),this.offsetX=t.clientX-this.subtitlesContainerRect.x,this.offsetY=t.clientY-this.subtitlesContainerRect.y,this.dragging=!0)}onMouseUp(){this.dragging=!1}onMouseMove(t){if(this.dragging){t.preventDefault();const e=t.clientX-this.offsetX,o=t.clientY-this.offsetY,n=o>=this.containerRect.top,i=o+this.subtitlesContainerRect.height<=this.containerRect.bottom,a=e>=this.containerRect.left,r=e+this.subtitlesContainerRect.width<=this.containerRect.right;this.votSubtitlesContainer.style.top=n&&i?o-this.containerRect.y+"px":n?this.containerRect.height-this.subtitlesContainerRect.height+"px":"0px",this.votSubtitlesContainer.style.left=a&&r?e-this.containerRect.x+"px":a?this.containerRect.width-this.subtitlesContainerRect.width+"px":"0px"}}onTimeUpdate(){this.update()}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,this.votSubtitlesContainer.innerHTML="")}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords!==!!t&&(this.highlightWords=!!t,this.update())}update(){if(!this.video)return;let t="",e=this.highlightWords&&this.subtitles?.containsTokens;const o=1e3*this.video.currentTime,n=this.subtitles?.subtitles?.findLast((t=>t.startMsthis.maxLength){let t=[],n=0,i=0,a=0;for(let o=0;othis.maxLength){let r=e.slice(n,i+1);r.at(0)&&" "===r.at(0).text&&(r=r.slice(1)),r.at(-1)&&" "===r.at(-1).text&&(r=r.slice(0,r.length-1)),t.push({startMs:e[n].startMs,durationMs:e[i].startMs+e[i].durationMs-e[n].startMs,tokens:r}),n=o,a=0}i=o}for(let n=0;ne||o>n.startMs-100&&e-o<275?'class="passed"':""}>${n.text}`}}else if(n.text.length>this.maxLength){let e=n.text.match(this.maxLengthRegexp),i=n.durationMs/e.length;for(let a=0;a${t.replace("\\n","
")}`:"")}}function ft(){return yt()?.player}function yt(){return document.querySelector(".vjs-v6")}const wt=async function(t="en"){let e=null;const o=ft(),{duration:n}=o?.cache_||{},{courseId:i,tracks:a,sources:r}=o?.options_||{},s=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(r),l=await async function(t){const e=await fetch(`https://www.coursera.org/api/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}(i);let d=l?.primaryLanguageCodes?.[0];d=d?(0,x.eL)(d):"en",f.includes(d)||(d="en");const c=function(t,e,o){let n=t?.find((t=>(0,x.eL)(t.srclang)===e));return n||(n=t?.find((t=>(0,x.eL)(t.srclang)===o))||t?.[0]),n?.src}(a,d,t);console.log(`videoURL: ${s}, subtitlesURL: ${c}`),c&&s?e=[{target:"video_file_url",targetUrl:s},{target:"subtitles_file_url",targetUrl:`https://www.coursera.org${c}`}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${s}, subtitlesURL: ${c}`);const u={duration:n,detectedLanguage:d,translationHelp:e};return b.Z.log("coursera video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},xt="https://www.udemy.com/api-2.0";async function St(t){const e=await fetch(`${xt}/courses/${t}/?`+new URLSearchParams({"fields[course]":"locale",use_remote_version:"true",caching_intent:"true"}));return await e.json()}async function kt(t,e,o){if(!(t.expires+2592e6>(new Date).getTime()&&t.accessToken))return void console.error(v.V.get("udemyAccessTokenExpired"));const n=`Bearer ${t.accessToken}`,i=await fetch(`${xt}/users/me/subscribed-courses/${e}/lectures/${o}/?`+new URLSearchParams({"fields[lecture]":"asset","fields[asset]":"length,media_sources,captions"}),{headers:{"x-udemy-authorization":n,authorization:n}});return await i.json()}function Tt(){return Mt()?.player}function Vt(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(v.V.get("udemyModuleArgsNotFound")),{})}function Mt(){return document.querySelector(".vjs-v7")}const Lt=async function(t,e="en"){let o=null;const n=Tt();b.Z.log("udemyData",t);const i=Vt();b.Z.log("moduleData: ",i);const a=i.courseId,r=window.location.pathname.match(/learn\/lecture\/([^/]+)/)?.[1];b.Z.log(`CourseId: ${a}, lectureId: ${r}`);const s=await St(a);b.Z.log("courseLang Data:",s);const l=await kt(t,a,r);console.log("lecture Data:",l);let d=s?.locale?.locale;d=d?(0,x.eL)(d):"en",f.includes(d)||(d="en");const c=l?.asset?.length||n?.cache_?.duration,u=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(l?.asset?.media_sources)||function(){const t=Mt()?.querySelector("video")?.src;return!t?.startsWith("blob:")&&t}(),h=function(t,e,o){let n=t?.find((t=>(0,x.eL)(t.locale_id)===e));return n||(n=t?.find((t=>(0,x.eL)(t.locale_id)===o))||t?.[0]),n?.url}(l?.asset?.captions,d,e);console.log(`videoURL: ${u}, subtitlesURL: ${h}`),h&&u?o=[{target:"video_file_url",targetUrl:u},{target:"subtitles_file_url",targetUrl:h}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${u}, subtitlesURL: ${h}`);const p={duration:c,detectedLanguage:d,translationHelp:o};return b.Z.log("udemy video data:",p),console.log("[VOT] Detected language: ",p.detectedLanguage),p};o("./node_modules/requestidlecallback-polyfill/index.js");class Ot{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}function Pt(t){return Array.from(t).map((t=>{const e=[];return t instanceof HTMLVideoElement&&e.push(t),t instanceof HTMLElement&&e.push(...Array.from(t.querySelectorAll("video"))),t?.shadowRoot?.querySelectorAll&&e.push(...Array.from(t.shadowRoot.querySelectorAll("video"))),e})).flat()}const Et=[{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:".player-container"},{host:"youtube",url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:"tiktok",url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:"proxytok",url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tik.hostux.net","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{additionalData:"mobile",host:"twitch",url:"https://twitch.tv/",match:/^m.twitch.tv$/,selector:"main > div > section > div > div > div"},{host:"twitch",url:"https://twitch.tv/",match:t=>t.host.includes("clips.twitch.tv")||t.host.includes("player.twitch.tv")&&null===t.searchParams.get("channel")||t.host.includes("twitch.tv")&&(t.pathname.startsWith("/videos")||t.pathname.startsWith("/embed")||t.pathname.includes("/clip")),selector:".video-ref"},{host:"xvideos",url:"https://www.xvideos.com/",match:/^www.xvideos.com$/,selector:".video-bg-pic"},{host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{additionalData:"mobile",host:"vk",url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{host:"vk",url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:"vimeo",url:"https://vimeo.com/",match:/^(player.)?vimeo.com$/,selector:".player"},{host:"nine_gag",url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:"coub",url:"https://coub.com/view/",match:/^coub.com$/,selector:".viewer__player"},{host:"bitchute",url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".plyr__video-wrapper"},{host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap"},{additionalData:"old",host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:"twitter",url:"https://twitter.com/i/status/",match:/^twitter.com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:"mail_ru",url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:"coursera",url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6"},{host:"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)'},{host:"invidious",url:"https://youtu.be/",match:nt,selector:"#player"},{host:"piped",url:"https://youtu.be/",match:it,selector:".shaka-video-container"},{host:"rumble",url:"https://rumble.com",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:"eporner",url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:"peertube",url:"tube.shanti.cafe",match:["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"],selector:".vjs-v7"},{host:"dailymotion",url:"https://www.dailymotion.com/video/",match:/^geo.dailymotion.com$/,selector:".player"},{host:"trovo",url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:"yandexdisk",url:"https://disk.yandex.ru/i/",match:/^disk.yandex.ru$/,selector:"yaplayertag > div:nth-of-type(1)"}],Ct=ht.getParser(window.navigator.userAgent).getResult(),At=[...nt,...it],Bt=["playing","ratechange","play","waiting","pause"];function Ft(t,e,o=!1){return t.map((t=>({label:`${o&&!w.includes(t)?"❌ ":""}${v.V.get("langs")[t]??t.toUpperCase()}`,value:t,selected:e===t})))}var _t=!1;class qt{translateFromLang="en";translateToLang=x.KQ;timer;ytData="";videoData="";firstPlay=!0;audio=new Audio;hls=(0,x.QZ)();downloadTranslationUrl=null;downloadSubtitlesUrl=null;autoRetry;streamPing;volumeOnStart;tempOriginalVolume;tempVolume;subtitlesList=[];subtitlesListVideoId=null;videoLastSrcObject=null;constructor(t,e,o){b.Z.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.handleSrcChangedBound=this.handleSrcChanged.bind(this),this.srcObserver=new MutationObserver(this.handleSrcChangedBound),this.srcObserver.observe(this.video,{attributeFilter:["src","currentSrc"]}),this.srcObjectInterval=setInterval((async()=>{this.videoLastSrcObject!==this.video.srcObject&&(this.videoLastSrcObject=this.video.srcObject,await this.handleSrcChanged())}),100),this.stopTranslationBound=this.stopTranslation.bind(this),this.handleVideoEventBound=this.handleVideoEvent.bind(this),this.changeOpacityOnEventBound=this.changeOpacityOnEvent.bind(this),this.resetTimerBound=this.resetTimer.bind(this),this.init()}async init(){if(this.initialized)return;this.data={autoTranslate:await k.i.get("autoTranslate",0,!0),dontTranslateLanguage:await k.i.get("dontTranslateLanguage",x.KQ),dontTranslateYourLang:await k.i.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:await k.i.get("autoSetVolumeYandexStyle",1,!0),autoVolume:await k.i.get("autoVolume",S.sN,!0)/100,showVideoSlider:await k.i.get("showVideoSlider",1,!0),syncVolume:await k.i.get("syncVolume",0,!0),subtitlesMaxLength:await k.i.get("subtitlesMaxLength",300,!0),highlightWords:await k.i.get("highlightWords",0,!0),responseLanguage:await k.i.get("responseLanguage",x.KQ),defaultVolume:await k.i.get("defaultVolume",100,!0),udemyData:await k.i.get("udemyData",{accessToken:"",expires:0}),audioProxy:await k.i.get("audioProxy","uk"===x.KQ?1:0,!0),showPiPButton:await k.i.get("showPiPButton",0,!0),translateAPIErrors:await k.i.get("translateAPIErrors",1,!0),translationService:await k.i.get("translationService",S.kF),detectService:await k.i.get("detectService",S.EY),m3u8ProxyHost:await k.i.get("m3u8ProxyHost",S.e6),proxyWorkerHost:await k.i.get("proxyWorkerHost",S.ez)},this.videoData=await this.getVideoData(),console.log("[db] data from db: ",this.data),this.subtitlesWidget=new bt(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.initUI(),this.initUIEvents();const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t,this.votButton.label.innerHTML=e}initUI(){this.votButton=ct.createVOTButton(v.V.get("translateVideo")),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!(0,x.qq)()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!(0,x.qq)()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=ct.createVOTMenu(v.V.get("VOTSettings")),this.container.appendChild(this.votMenu.container),this.votDownloadButton=ct.createIconButton(''),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=ct.createIconButton(''),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=ct.createIconButton(''),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=ct.createVOTLanguageSelect({fromTitle:v.V.get("langs")[this.video.detectedLanguage],fromDialogTitle:v.V.get("videoLanguage"),fromItems:[{label:v.V.get("langs").auto,value:"auto",selected:""},...Ft(f,this.videoData.detectedLanguage)],fromOnSelectCB:async t=>{b.Z.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:v.V.get("langs")[this.video.responseLanguage],toDialogTitle:v.V.get("translationLanguage"),toItems:[...Ft(f,this.videoData.responseLanguage,!0),{label:"─────────",value:"separator",disabled:!0},...Ft(y,this.videoData.responseLanguage,!0)],toOnSelectCB:async t=>{const e=t.target.dataset.votValue;b.Z.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await k.i.set("responseLanguage",this.data.responseLanguage),b.Z.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=ct.createVOTSelect(v.V.get("VOTSubtitlesDisabled"),v.V.get("VOTSubtitles"),[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=ct.createSlider(`${v.V.get("VOTVolume")}: ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=ct.createSlider(`${v.V.get("VOTVolumeTranslation")}: ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=ct.createDialog(v.V.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=ct.createHeader(v.V.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=ct.createCheckbox(v.V.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=ct.createVOTSelect(v.V.get("langs")[k.i.syncGet("dontTranslateLanguage",x.KQ)],v.V.get("VOTDontTranslateYourLang"),Ft(f,k.i.syncGet("dontTranslateLanguage",x.KQ)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await k.i.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:ct.createCheckbox(v.V.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.votAutoSetVolumeCheckbox=ct.createCheckbox(`${v.V.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=ct.createSlider(`${100*(this.data?.autoVolume??S.sN)}%`,100*(this.data?.autoVolume??S.sN),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=ct.createCheckbox(v.V.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votUdemyDataTextfield=ct.createTextfield(v.V.get("VOTUdemyData"),this.data?.udemyData?.accessToken??""),this.votUdemyDataTextfield.container.hidden="udemy"!==this.site.host,this.votSettingsDialog.bodyContainer.appendChild(this.votUdemyDataTextfield.container),this.votSyncVolumeCheckbox=ct.createCheckbox(v.V.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSyncVolumeCheckbox.container.hidden="youtube"!==this.site.host||"mobile"===this.site.additionalData,this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=ct.createVOTSelect(k.i.syncGet("translationService",S.kF),v.V.get("VOTTranslationService"),Ft(O,k.i.syncGet("translationService",S.kF)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await k.i.set("translationService",this.data.translationService)},labelElement:ct.createCheckbox(v.V.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===v.V.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=ct.createVOTSelect(k.i.syncGet("detectService",S.EY),v.V.get("VOTDetectService"),Ft(P,k.i.syncGet("detectService",S.EY)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await k.i.set("detectService",this.data.detectService)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=ct.createHeader(v.V.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesMaxLengthSlider=ct.createSlider(`${v.V.get("VOTSubtitlesMaxLength")}: ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesHighlightWordsCheckbox=ct.createCheckbox(v.V.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votProxyHeader=ct.createHeader(v.V.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=ct.createTextfield(v.V.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,S.e6),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=ct.createTextfield(v.V.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,S.ez),this.votProxyWorkerHostTextfield.container.hidden=!1,this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=ct.createCheckbox(v.V.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votAudioProxyCheckbox.container.hidden=!1,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=ct.createHeader(v.V.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=ct.createVOTSelect(v.V.get("langs")[k.i.syncGet("locale-lang-override","auto")],v.V.get("VOTMenuLanguage"),Ft(v.Z,k.i.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await k.i.set("locale-lang-override",t.target.dataset.votValue)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=ct.createCheckbox(v.V.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!(0,x.qq)(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=ct.createInformation(`${v.V.get("VOTVersion")}:`,`cloudflare ${GM_info.script.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=ct.createInformation(`${v.V.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=ct.createInformation(`${v.V.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=ct.createInformation(`${v.V.get("VOTBrowser")}:`,`${Ct.browser.name} ${Ct.browser.version} (${Ct.os.name} ${Ct.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=ct.createButton(v.V.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{if(this.audio.src)return b.Z.log("[click translationBtn] audio.src is not empty"),void this.stopTraslate();try{b.Z.log("[click translationBtn] trying execute translation");const t=(0,x.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");await this.translateExecutor(t)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}})),this.votButton.pipButton.addEventListener("click",(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(()=>{console.log(this.downloadSubtitlesUrl),this.downloadSubtitlesUrl&&window.open(this.downloadSubtitlesUrl,"_blank").focus()})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(void 0===document.fullscreen||document.fullscreen)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.mozCancelFullscreen&&document.mozCancelFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);if(this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`,this.setVideoVolume(e/100),1===this.data.syncVolume){const t=Number(this.votVideoTranslationVolumeSlider.input.value),o=ut(this.audio,e,t,this.tempOriginalVolume);this.votVideoTranslationVolumeSlider.input.value=o,this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ct.updateSlider(this.votVideoTranslationVolumeSlider.input),this.tempVolume=o,this.tempOriginalVolume=e}})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(async t=>{this.data.defaultVolume=Number(t.target.value),await k.i.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${this.data.defaultVolume}%`,this.audio.volume=this.data.defaultVolume/100,1===this.data.syncVolume&&this.syncTranslationWithVideo(this.data.defaultVolume)})),this.votAutoTranslateCheckbox.input.addEventListener("change",(async t=>{this.data.autoTranslate=Number(t.target.checked),await k.i.set("autoTranslate",this.data.autoTranslate),b.Z.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(async t=>{this.data.dontTranslateYourLang=Number(t.target.checked),await k.i.set("dontTranslateYourLang",this.data.dontTranslateYourLang),b.Z.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await k.i.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),b.Z.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})),this.votAutoSetVolumeSlider.input.addEventListener("input",(async t=>{const e=Number(t.target.value);this.data.autoVolume=e/100,await k.i.set("autoVolume",e),this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(async t=>{this.data.showVideoSlider=Number(t.target.checked),await k.i.set("showVideoSlider",this.data.showVideoSlider),b.Z.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})),this.votUdemyDataTextfield.input.addEventListener("change",(async t=>{this.data.udemyData={accessToken:t.target.value,expires:(new Date).getTime()},await k.i.set("udemyData",this.data.udemyData),b.Z.log("udemyData value changed. New value: ",this.data.udemyData),window.location.reload()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.syncVolume=Number(t.target.checked),await k.i.set("syncVolume",this.data.syncVolume),b.Z.log("syncVolume value changed. New value: ",this.data.syncVolume)})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(async t=>{this.data.translateAPIErrors=Number(t.target.checked),await k.i.set("translateAPIErrors",this.data.translateAPIErrors),b.Z.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(async t=>{this.data.subtitlesMaxLength=Number(t.target.value),await k.i.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").innerHTML=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(async t=>{this.data.highlightWords=Number(t.target.checked),await k.i.set("highlightWords",this.data.highlightWords),b.Z.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(async t=>{this.data.showPiPButton=Number(t.target.checked),await k.i.set("showPiPButton",this.data.showPiPButton),b.Z.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!(0,x.qq)()||!this.data.showPiPButton,this.votButton.separator2.hidden=!(0,x.qq)()||!this.data.showPiPButton})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(async t=>{this.data.m3u8ProxyHost=t.target.value||S.e6,await k.i.set("m3u8ProxyHost",this.data.m3u8ProxyHost),b.Z.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(async t=>{this.data.proxyWorkerHost=t.target.value||S.ez,await k.i.set("proxyWorkerHost",this.data.proxyWorkerHost),b.Z.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),window.location.reload()})),this.votAudioProxyCheckbox.input.addEventListener("change",(async t=>{this.data.audioProxy=Number(t.target.checked),await k.i.set("audioProxy",this.data.audioProxy),b.Z.log("audioProxy value changed. New value: ",this.data.audioProxy)})),this.votResetSettingsButton.addEventListener("click",(async()=>{v.V.reset(),(await k.i.list()).filter((t=>!v.V.gmValues.includes(t))).forEach((t=>k.i.syncDelete(t))),window.location.reload()}))}releaseExtraEvents(){clearInterval(this.resizeInterval),this.resizeObserver?.disconnect(),"youtube"===this.site.host&&"mobile"!==this.site.additionalData&&this.syncVolumeObserver?.disconnect(),this.extraEvents?.forEach((t=>{t.element.removeEventListener(t.event,t.handler)}))}initExtraEvents(){this.extraEvents=[];const t=(t,e,o)=>{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{o.forEach((o=>{t(e,o,n)}))};if(this.resizeObserver=new ResizeObserver((t=>{t.forEach((t=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${t.contentRect.height}px`)}))})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),this.resizeInterval=setInterval((()=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`)}),500),"youtube"===this.site.host&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{t.forEach((t=>{"attributes"===t.type&&"aria-valuenow"===t.attributeName&&this.syncVideoVolumeSlider()}))}));const t=document.querySelector(".ytp-volume-panel");t&&this.syncVolumeObserver.observe(t,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0})}let o;document.addEventListener("click",(t=>{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),c=a.contains(e),u=r?.contains(e)??!1;b.Z.log(`[document click] ${s} ${l} ${d} ${c} ${u}`),s||l||c||u||(d||this.logout(0),this.votMenu.container.hidden=!0)})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".video-element-wrapper-js > div"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimerBound),t(this.votButton.container,"mousemove",this.changeOpacityOnEventBound),t(this.votMenu.container,"mousemove",this.changeOpacityOnEventBound),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEventBound),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),t(this.video,"abort",(()=>{b.Z.log("lipsync mode is abort"),this.stopTranslation(),this.videoData=""})),t(this.video,"progress",(async()=>{if(!this.firstPlay||1!==this.data.autoTranslate)return;const t=(0,x.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");try{await this.translateExecutor(t),this.firstPlay=!1}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t),this.firstPlay=!1}}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer(){clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),2e3)}changeOpacityOnEvent(t){clearTimeout(this.timer),this.logout(1),t.stopPropagation()}async changeSubtitlesLang(t){if(b.Z.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(v.V.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.downloadSubtitlesUrl=null;else{const e=await async function(t){let e=!1,o=await Promise.race([new Promise((async t=>{await(0,x._v)(5e3),e||console.error("[VOT] Failed to fetch subtitles. Reason: timeout"),e=!0,t([])})),new Promise((async o=>{b.Z.log("Fetching subtitles:",t),await fetch(t.url).then((t=>t.json())).then((t=>{e=!0,o(t)})).catch((t=>{console.error("[VOT] Failed to fetch subtitles. Reason:",t),e=!0,o({containsTokens:!1,subtitles:[]})}))}))]);return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^ +| +$/g,""))).join(" ");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(const i of t.subtitles){let a;if(i?.tokens?.length){if("yandex"!==e)return console.warn("[VOT] Unsupported subtitles tokens type: ",e),t.containsTokens=!1,null;a=vt(i)}else a=mt(i,n);n=a[a.length-1],o.push(Object.assign(Object.assign({},i),{tokens:a}))}return t.containsTokens=!0,o}(o,t.source),console.log("[VOT] subtitles:",o),o}(this.subtitlesList.at(parseInt(t)));this.subtitlesWidget.setContent(e),this.votDownloadSubtitlesButton.hidden=!1,this.downloadSubtitlesUrl=this.subtitlesList.at(parseInt(t))?.url}}async updateSubtitlesLangSelect(){const t=[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(v.V.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${v.V.get("VOTTranslatedFrom")} ${v.V.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${v.V.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){await this.changeSubtitlesLang("disabled");const t=(0,x.gJ)(this.site.host,this.video);if(!t)return console.error(`[VOT] ${v.V.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,void await this.updateSubtitlesLangSelect();this.subtitlesListVideoId!==t&&(this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),this.subtitlesList=await async function(t,e,n){const i="youtube"===t.host?_():[];let a=!1;const r=[...await Promise.race([new Promise((async t=>{await(0,x._v)(5e3),a||console.error("[VOT] Failed get yandex subtitles. Reason: timeout"),a=!0,t([])})),new Promise((i=>{!async function(t,e,n){try{b.Z.log("requestVideoSubtitles");const i=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const a=J(t,e);await i("/video-subtitles/get-subtitles",a,{"Vsubs-Signature":await gt(a),"Sec-Vsubs-Token":pt(!1)},n)}catch(t){console.error("[VOT]",t),n(!1)}}(`${t.url}${e}`,n,((t,e)=>{b.Z.log("[exec callback] Requesting video subtitles"),t||(console.error("[VOT] Failed get yandex subtitles"),a=!0,i([]));const o=X(e);console.log("[VOT] Subtitles response: ",o);let n=o.subtitles??[];n=n.reduce(((t,e)=>(e.language&&!t.find((t=>{if("yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage)return t}))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),a=!0,i(n)}))}))]),...i].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===x.KQ||e.language===x.KQ))return t.language===x.KQ?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===n?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===n?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}));return console.log("[VOT] subtitles list",r),r}(this.site,t,this.videoData.detectedLanguage),this.subtitlesList?this.subtitlesListVideoId=t:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect())}getVideoVolume(){let t=this.video?.volume;return"youtube"===this.site.host&&(t=F()||t),t}setVideoVolume(t){"youtube"===this.site.host&&R(t)||(this.video.volume=t)}syncVideoVolumeSlider(){const t=Math.round(100*this.getVideoVolume());this.votVideoVolumeSlider.input.value=t,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${t}%`,ct.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(t))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(v.V.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(v.V.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncTranslationWithVideo(t){const e=Number(this.votVideoVolumeSlider.input.value),o=ut(this.video,t,e,this.tempVolume);this.votVideoVolumeSlider.input.value=o,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ct.updateSlider(this.votVideoVolumeSlider.input),this.tempOriginalVolume=o,this.tempVolume=t}async getVideoData(){const t={translationHelp:null,isStream:!1};if(t.duration=this.video?.duration||343,t.videoId=(0,x.gJ)(this.site.host,this.video),t.detectedLanguage=this.translateFromLang,t.responseLanguage=this.translateToLang,!t.videoId)return this.ytData={},t;if(window.location.hostname.includes("youtube.com"))this.ytData=await q(),t.isStream=this.ytData.isLive,""!==this.ytData.author&&(t.detectedLanguage=this.ytData.detectedLanguage,t.responseLanguage=this.translateToLang);else if(window.location.hostname.includes("rutube")||window.location.hostname.includes("my.mail.ru"))t.detectedLanguage="ru";else if(window.location.hostname.includes("bilibili.com"))t.detectedLanguage="zh";else if(window.location.hostname.includes("coursera.org")){const e=await wt(this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else if(window.location.hostname.includes("udemy.com")){const e=await Lt(this.data.udemyData,this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else"vk"!==this.site.host&&"piped"!==this.site.host&&"invidious"!==this.site.host&&"bitchute"!==this.site.host&&"rumble"!==this.site.host&&"peertube"!==this.site.host&&"dailymotion"!==this.site.host&&"trovo"!==this.site.host&&"yandexdisk"!==this.site.host||(t.detectedLanguage="auto");return t}videoValidator(){if("youtube"===this.site.host){if(b.Z.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage&&this.videoData.responseLanguage===this.data.dontTranslateLanguage)throw new m("VOTDisableFromYourLang");if(this.videoData.duration>14400)throw new m("VOTVideoIsTooLong")}return!0}lipSync(t=!1){if(b.Z.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!==t)"pause"===t&&(b.Z.log("lipsync mode is pause"),this.audio.pause()),"stop"===t&&(b.Z.log("lipsync mode is stop"),this.audio.pause()),"waiting"===t&&(b.Z.log("lipsync mode is waiting"),this.audio.pause()),"playing"===t&&(b.Z.log("lipsync mode is playing"),this.audio.play());else{b.Z.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",v.V.get("grantPermissionToAutoPlay")),new m("grantPermissionToAutoPlay");if("NotSupportedError"===t.name)throw this.transformBtn("error",At.includes(window.location.hostname)?v.V.get("neededAdditionalExtension"):v.V.get("audioFormatNotSupported")),At.includes(window.location.hostname)?new m("neededAdditionalExtension"):new m("audioFormatNotSupported")}))}else b.Z.log("lipsync mode is not set")}handleVideoEvent(t){b.Z.log(`video ${t.type}`),this.lipSync(t.type)}stopTraslate(){Bt.forEach((t=>this.video.removeEventListener(t,this.handleVideoEventBound))),this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",v.V.get("translateVideo")),this.volumeOnStart&&(b.Z.log(`Volume on start: ${this.volumeOnStart}`),"youtube"===this.site.host?R(this.volumeOnStart):this.video.volume=this.volumeOnStart),clearInterval(this.streamPing),this.hls?.destroy(),this.hls=(0,x.QZ)()}async translateExecutor(t){this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),b.Z.log("Run videoValidator"),this.videoValidator(),b.Z.log("Run translateFunc"),this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}translateFunc(t,e,n,i,a){console.log("[VOT] Video Data: ",this.videoData);const r=`${this.site.url}${t}`;if(this.videoValidator(),e)return b.Z.log("Executed stream translation"),void function(t,e,n,i){b.Z.log(`Translate stream (url: ${t}, requestLang: ${e}, responseLang: ${n})`),async function(t,e,n,i){try{b.Z.log("requestStreamTranslation");const a=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const r=et(t,e,n);await a("/stream-translation/translate-stream",r,{"Vtrans-Signature":await gt(r),"Sec-Vtrans-Token":pt(!1)},i)}catch(t){console.error("[VOT]",t),i(!1)}}(t,e,n,((t,e)=>{if(b.Z.log("[exec callback] Requesting stream translation"),!t)return void i(!1,v.V.get("requestTranslationFailed"));const o=ot(e);switch(console.log("[VOT] Stream Translation response: ",o),o.interval){case 10:i(!1,o.interval,v.V.get("translationTakeFewMinutes"));break;case 20:i(!0,o.interval,o||v.V.get("audioNotReceived"));break;case 0:i(!1,o.interval,v.V.get("streamNoConnectionToServer"))}}))}(r,n,i,(async(r,s,l)=>{if(b.Z.log("[exec callback] translateStream callback"),(0,x.gJ)(this.site.host,this.video)!==t)return;if(!r||!l.translatedInfo)return"VOTLocalizedError"===l?.name?this.transformBtn("error",l.localizedMessage):1===this.data.translateAPIErrors&&"ru"!==v.V.lang?(this.transformBtn("error",`${v.V.get("VOTTranslatingError")}...`),this.transformBtn("error",await L(l,"ru",v.V.lang))):this.transformBtn("error",l),void(10===s&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),1e3*s)));this.transformBtn("success",v.V.get("disableTranslate")),console.log(l);const d=l.pingId;b.Z.log(`Stream pingId: ${d}`),this.streamPing=setInterval((async()=>await async function(t,e){try{b.Z.log("requestStreamPing");const n=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const i=tt(t);await n("/stream-translation/ping-stream",i,{"Vtrans-Signature":await gt(i),"Sec-Vtrans-Token":pt(!1)},e)}catch(t){console.error("[VOT]",t),e(!1)}}(d,(t=>b.Z.log("Stream ping result: ",t)))),1e3*s),b.Z.log(l.translatedInfo.url);const c=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(l.translatedInfo.url)}`;if(b.Z.log(c),this.hls)this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){b.Z.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t,e){b.Z.log("manifest loaded, found "+e.levels.length+" quality level")})),this.hls.loadSource(c),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t,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()}})),b.Z.log(this.hls);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new m("audioFormatNotSupported");this.audio.src=c}z(this.video,10),this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),this.video.src||this.video.currentSrc||this.video.srcObject?(this.video&&!this.video.paused&&this.lipSync("play"),Bt.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ct.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=c):this.stopTranslation()}));if(["udemy","coursera"].includes(this.site.host)&&!a)throw new m("VOTTranslationHelpNull");!function(t,e,n,i,a,r){b.Z.log(`Translate video (url: ${t}, duration: ${e}, requestLang: ${n}, responseLang: ${i})`),b.Z.log("translationHelp:",a),_t?b.Z.log("translationPanding return"):(_t=!0,async function(t,e,n,i,a,r){try{b.Z.log("requestVideoTranslation");const s=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const l=K(t,e,n,i,a);await s("/video-translation/translate",l,{"Vtrans-Signature":await gt(l),"Sec-Vtrans-Token":pt(!1)},r)}catch(t){console.error("[VOT]",t),r(!1)}}(t,e,n,i,a,((t,e)=>{if(_t=!1,b.Z.log("[exec callback] Requesting video translation"),!t)return void r(!1,v.V.get("requestTranslationFailed"));const o=Q(e);switch(console.log("[VOT] Translation response: ",o),o.status){case 0:r(!1,o.message);break;case 1:r(!!o.url,o.url||v.V.get("audioNotReceived"));break;case 2:r(!1,o.remainingTime?(0,x.PG)(o.remainingTime):v.V.get("translationTakeFewMinutes"));break;case 3:r(!1,v.V.get("videoBeingTranslated"))}})))}(r,this.videoData.duration,n,i,a,(async(o,r)=>{if(b.Z.log("[exec callback] translateVideo callback"),(0,x.gJ)(this.site.host,this.video)!==t)return;if(!o)return"VOTLocalizedError"===r?.name?this.transformBtn("error",r.localizedMessage):1!==this.data.translateAPIErrors||r.includes(v.V.get("translationTake"))||"ru"===v.V.lang?this.transformBtn("error",r):(this.transformBtn("error",v.V.get("VOTTranslatingError")),this.transformBtn("error",await L(r,"ru",v.V.lang))),r.includes(v.V.get("translationTake"))&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),6e4)),void console.error("[VOT]",r);if(this.audio.src=r,1===this.data.audioProxy&&r.startsWith("https://")){const t=r.replace("https://vtrans.s3-private.mds.yandex.net/tts/prod/",""),e=`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/${t}`;console.log(`[VOT] Audio proxied via ${e}`),this.audio.src=e}if(this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),"twitter"===this.site.host&&document.querySelector('div[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslationBound),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return void this.stopTranslation();const s=["twitch","vimeo","facebook","rutube","twitter","bilibili","mail_ru","rumble","eporner"];for(let t=0;t{t.forEach((t=>{"attributes"===t.type&&"src"===t.attributeName&&t.target===this.video&&""!==t.target.src&&(this.stopTranslation(),this.firstPlay=!0)}))})).observe(this.container,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0});break}this.video&&!this.video.paused&&this.lipSync("play"),Bt.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.transformBtn("success",v.V.get("disableTranslate")),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ct.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=r}))}stopTranslation(){this.stopTraslate(),this.syncVideoVolumeSlider()}async waitInitialization(){let t=!1;return await Promise.race([new Promise((async e=>{await(0,x._v)(1e3),t||console.error("[VOT] Initialization timeout"),t=!0,e(!1)})),new Promise((async e=>{for(;!this.initialized;)await(0,x._v)(100);t=!0,e(!0)}))])}async handleSrcChanged(){if(b.Z.log("[VideoHandler] src changed",this),!await this.waitInitialization())return;this.stopTranslation(),this.videoData=await this.getVideoData(),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru"}async release(){b.Z.log("[VideoHandler] release"),await this.waitInitialization()&&(this.initialized=!1,this.stopTranslation(),this.releaseExtraEvents(),this.subtitlesWidget.release(),this.srcObserver.disconnect(),clearInterval(this.srcObjectInterval),this.votButton.container.remove(),this.votMenu.container.remove())}}const Rt=new class{constructor(){this.onVideoAdded=new Ot,this.onVideoRemoved=new Ot,this.handleVideoAddedBound=this.handleVideoAdded.bind(this),this.handleVideoRemovedBound=this.handleVideoRemoved.bind(this),this.observer=new MutationObserver((t=>{window.requestIdleCallback((()=>{t.forEach((t=>{"childList"===t.type&&(Pt(t.addedNodes).forEach(this.handleVideoAddedBound),Pt(t.removedNodes).forEach(this.handleVideoRemovedBound))}))}),{timeout:1e3})}))}enable(){this.observer.observe(document,{childList:!0,subtree:!0}),document.querySelectorAll("video").forEach(this.handleVideoAddedBound)}disable(){this.observer.disconnect()}handleVideoAdded(t){this.onVideoAdded.dispatch(t)}handleVideoRemoved(t){document.contains(t)||this.onVideoRemoved.dispatch(t)}},zt=new WeakMap;(async function(){b.Z.log("Loading extension..."),await v.V.update(),b.Z.log(`Selected menu language: ${v.V.lang}`),b.Z.log("Extension compatibility passed..."),Rt.onVideoAdded.addListener((t=>{for(const e of Et.filter((t=>{const e=t=>t instanceof RegExp&&t.test(window.location.hostname)||"string"==typeof t&&window.location.hostname.includes(t)||"function"==typeof t&&t(new URL(window.location));return!!(e(t.match)||t.match instanceof Array&&t.match.some((t=>e(t))))&&t.host&&t.url}))){if(!e)continue;let o;if(e.shadowRoot)o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.shadowRoot.contains(t))):t.parentElement,o=o&&o.shadowRoot?o.parentElement:o;else{const n=Ct.browser.version.split(".")?.[0];if(e.selector?.includes(":not")&&e.selector?.includes("*")&&n&&("Chrome"===Ct.browser.name&&Number(n)<88||"Firefox"===Ct.browser.name&&Number(n)<84)){const n=e.selector?.split(" *")?.[0];o=n?Object.values(document.querySelectorAll(n)).find((e=>e.contains(t))):t.parentElement}else o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.contains(t))):t.parentElement}if(o&&!("rumble"===e.host&&o.querySelector("vot-block")||("peertube"===e.host&&(e.url=window.location.origin),zt.has(t)))){zt.set(t,new qt(t,o,e));break}}})),Rt.onVideoRemoved.addListener((async t=>{zt.has(t)&&(await zt.get(t).release(),zt.delete(t))})),Rt.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file +(()=>{var t={"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[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}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var c=s.default.find(r,(function(t){return e.isPlatform(t)}));if(c){var u=this.satisfies(o[c]);if(void 0!==u)return u}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{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(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{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(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{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(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss":(t,e,o)=>{"use strict";o.d(e,{Z:()=>s});var n=o("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),i=o.n(n),a=o("./node_modules/css-loader/dist/runtime/api.js"),r=o.n(a)()(i());r.push([t.id,'.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) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer;transition:box-shadow .2s}.vot-button[hidden]{display:none !important}.vot-button::-moz-focus-inner{border:none}.vot-button::before,.vot-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-button::before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.vot-button:hover::before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.vot-button:active::after{opacity:.32;background-size:100% 100%;transition:background-size 0s}.vot-button:disabled{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.12);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);box-shadow:none;cursor:initial}.vot-button:disabled::before,.vot-button:disabled::after{opacity:0}.vot-outlined-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:solid 1px;border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.24);border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:34px;outline:none;cursor:pointer}.vot-outlined-button[hidden]{display:none !important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button::before,.vot-outlined-button::after{content:"";position:absolute;border-radius:3px;top:0;right:0;bottom:0;left:0;opacity:0}.vot-outlined-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-outlined-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-outlined-button:disabled::before,.vot-outlined-button:disabled::after{opacity:0}.vot-text-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:4px;padding:0 8px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-text-button[hidden]{display:none !important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button::before,.vot-text-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-text-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-text-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-text-button:disabled::before,.vot-text-button:disabled::after{opacity:0}.vot-icon-button{--vot-helper-onsurface: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:50%;padding:0;width:36px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-icon-button[hidden]{display:none !important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button::before,.vot-icon-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-icon-button::before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s,opacity 0s}.vot-icon-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);fill:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-icon-button:disabled::before,.vot-icon-button:disabled::after{opacity:0}.vot-textfield{--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), 0.38 ) !important;--vot-helper-safari2: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari3: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;position:relative !important;display:inline-block;padding-top:6px !important;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-textfield[hidden]{display:none !important}.vot-textfield>input,.vot-textfield>textarea{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:0 !important;border-style:solid !important;border-width:1px !important;border-color:rgba(0,0,0,0) var(--vot-helper-safari2) var(--vot-helper-safari2) !important;border-radius:4px !important;padding:15px 13px 15px !important;width:100% !important;height:inherit !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;-webkit-text-fill-color:currentColor !important;background-color:rgba(0,0,0,0) !important;box-shadow:inset 1px 0 rgba(0,0,0,0),inset -1px 0 rgba(0,0,0,0),inset 0 -1px rgba(0,0,0,0) !important;font-family:inherit !important;font-size:inherit !important;line-height:inherit !important;caret-color:var(--vot-helper-theme) !important;transition:border .2s,box-shadow .2s !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{position:absolute !important;top:0 !important;left:0 !important;display:flex !important;width:100% !important;max-height:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;font-size:75% !important;line-height:15px !important;cursor:text !important;transition:color .2s,font-size .2s,line-height .2s !important;pointer-events:none !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;display:block !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin-top:6px !important;border-top:solid 1px var(--vot-helper-safari2) !important;min-width:10px !important;height:8px !important;pointer-events:none !important;box-shadow:inset 0 1px rgba(0,0,0,0) !important;transition:border .2s,box-shadow .2s !important}.vot-textfield>input+span::before,.vot-textfield>textarea+span::before{margin-right:4px !important;border-left:solid 1px rgba(0,0,0,0) !important;border-radius:4px 0 !important}.vot-textfield>input+span::after,.vot-textfield>textarea+span::after{flex-grow:1 !important;margin-left:4px !important;border-right:solid 1px rgba(0,0,0,0) !important;border-radius:0 4px !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:rgba(0,0,0,0) !important}.vot-textfield:hover>input,.vot-textfield:hover>textarea{border-color:rgba(0,0,0,0) var(--vot-helper-safari3) var(--vot-helper-safari3) !important}.vot-textfield:hover>input+span::before,.vot-textfield:hover>input+span::after,.vot-textfield:hover>textarea+span::before,.vot-textfield:hover>textarea+span::after{border-top-color:var(--vot-helper-safari3) !important}.vot-textfield:hover>input:not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3) !important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:rgba(0,0,0,0) 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:rgba(0,0,0,0) var(--vot-helper-safari1) var(--vot-helper-safari1) !important;color:rgba(var(--vot-onsurface-rgb, 0, 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{border-top-color:var(--vot-helper-safari1) !important}.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:rgba(0,0,0,0) !important}@media not all and (min-resolution: 0.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;position:relative;display:inline-block;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-checkbox[hidden]{display:none !important}.vot-checkbox>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:1;position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:3px 1px;border:solid 2px;background:rgba(0,0,0,0);border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6);border-radius:2px;width:18px;height:18px;outline:none;cursor:pointer;transition:border-color .2s,background-color .2s}.vot-checkbox>input+span{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-left:30px;width:inherit;cursor:pointer}.vot-checkbox>input+span::before{content:"";position:absolute;left:-10px;top:-8px;display:block;border-radius:50%;width:40px;height:40px;background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0));opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s,transform .2s}.vot-checkbox>input+span::after{content:"";z-index:1;display:block;position:absolute;top:3px;left:1px;-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important;width:10px;height:5px;border:solid 2px rgba(0,0,0,0);border-right-width:0;border-top-width:0;pointer-events:none;transform:translate(3px, 4px) rotate(-45deg);transition:border-color .2s}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.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))}.vot-checkbox>input:indeterminate+span::after{border-left-width:0;transform:translate(4px, 3px)}.vot-checkbox:hover>input+span::before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6)}.vot-checkbox:active>input+span::before{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38)}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled+span::before{opacity:0;transform:scale(0)}.vot-slider{--vot-safari-helper1: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.04 ) !important;--vot-safari-helper2: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.12 ) !important;--vot-safari-helper3: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.16 ) !important;--vot-safari-helper4: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.24 ) !important;display:inline-block;width:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;font-family:var(--vot-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-slider[hidden]{display:none !important}.vot-slider>input{-webkit-appearance:none !important;appearance:none !important;position:relative !important;top:24px !important;display:block !important;margin:0 0 -36px !important;width:100% !important;height:36px !important;background-color:rgba(0,0,0,0) !important;cursor:pointer !important}.vot-slider>input:last-child{position:static !important;margin:0 !important}.vot-slider>span{display:inline-block !important;margin-bottom:36px !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), 0.38) !important}.vot-slider>input::-webkit-slider-runnable-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-webkit-slider-thumb{margin:0 !important;appearance:none !important;-webkit-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1) !important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4) !important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0)) !important;color:rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;transform:scale(4, 4) !important}.vot-slider>input::-moz-range-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-moz-range-thumb{appearance:none !important;-moz-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider>input::-moz-range-progress{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !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, 4) !important}.vot-slider>input::-moz-focus-outer{border:none !important}.vot-slider>input::-ms-track{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:17px 0 !important;border:none !important;border-radius:1px !important;padding:0 17px !important;width:100% !important;height:2px !important;background-color:rgba(0,0,0,0) !important}.vot-slider>input::-ms-fill-lower{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider>input::-ms-fill-upper{border-radius:1px !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-ms-thumb{appearance:none !important;margin:0 17px !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important;opacity:.38 !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, 4) !important}.vot-slider>input::before{content:"" !important;display:block !important;position:absolute !important;width:calc(100%*var(--vot-progress, 0)) !important;height:2px !important;top:calc(50% - 1px) !important;background:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0) !important;--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87) !important;--vot-helper-safari1: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari2: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;display:flex;align-items:center;justify-content:space-between;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;line-height:1.5;text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-select[hidden]{display:none !important}.vot-select-label{font-size:16px}.vot-select-outer{display:flex;align-items:center;justify-content:space-between;max-width:120px;width:120px;padding:0 5px;border-style:solid !important;border-width:1px !important;border-color:var(--vot-helper-safari1) !important;border-radius:4px !important;cursor:pointer;transition:border .2s !important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2) !important}.vot-select-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vot-select-arrow-icon{width:20px;height:32px;display:flex;justify-content:center;align-items:center}.vot-select-content-list{display:flex;flex-direction:column}.vot-select-content-list .vot-select-content-item{padding:5px 10px;border-radius:8px;cursor:pointer}.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), 0.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.1) !important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none !important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-weight:bold;line-height:1.5;text-align:start}.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{display:flex;color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-info[hidden]{display:none !important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb), 0.5);flex:1;margin-left:8px}.vot-lang-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);display:flex;align-items:center;justify-content:space-between;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-lang-select[hidden]{display:none !important}.vot-lang-select-icon{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.vot-segmented-button{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);overflow:hidden;position:absolute;left:50%;top:5rem;transform:translate(-50%);user-select:none;display:flex;align-items:center;height:32px;max-width:100vw;background:rgb(var(--vot-surface-rgb, 255, 255, 255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);border-radius:4px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;cursor:default;transition:opacity .5s;z-index:100}.vot-segmented-button[hidden]{display:none !important}.vot-segmented-button *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-segmented-button .vot-separator{width:1px;height:50%;background:rgba(var(--vot-helper-theme-rgb), 0.1)}.vot-segmented-button .vot-separator[hidden]{display:none !important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;height:100%;padding:0 8px;background-color:rgba(0,0,0,0);color:inherit;transition:background-color 100ms ease-in-out;border:none}.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:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.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 at center, currentColor 1%, transparent 1%) center/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 0s}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{margin-left:8px;white-space:nowrap}.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 svg{width:fit-content}.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), 0.87);overflow:hidden;position:absolute;left:50%;top:calc(5rem + 32px + 16px);user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);border-radius:8px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;min-width:300px;cursor:default;z-index:100;visibility:visible;opacity:1;transform-origin:top;transform:translate(-50%) scale(1);transition:opacity .3s,transform .1s}.vot-menu *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-menu[hidden]{pointer-events:none;display:block !important;pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%) scale(0)}.vot-menu-content-wrapper{display:flex;flex-direction:column;min-height:100px;max-height:calc(var(--vot-container-height, 75vh) - (5rem + 32px + 16px)*2);overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-menu-header-container:empty{padding:0 0 16px 0}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0;text-align:start}.vot-menu-title{flex:1;font-size:16px;line-height:1;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 16px;gap:8px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar,.vot-menu-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-footer-container:empty{padding:16px 0 0 0}.vot-dialog-container{visibility:visible;position:absolute;z-index:10000}.vot-dialog-container[hidden]{display:block !important;pointer-events:none;visibility:hidden}.vot-dialog-container *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-dialog-backdrop{background-color:rgba(0,0,0,.6);position:fixed;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .3s}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.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), 0.87);display:block;position:fixed;top:50%;bottom:50%;max-width:initial;max-height:initial;width:min(var(--vot-dialog-width, 512px),100%);height:fit-content;inset-inline-start:0px;inset-inline-end:0px;inset-block-start:0px;inset-block-end:0px;border-radius:8px;margin:auto;padding:0;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);box-shadow:0 0 16px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.24);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;user-select:none;visibility:visible;overflow:auto;overflow-y:hidden;opacity:1;transform-origin:center;transform:scale(1);transition:opacity .3s,transform .1s}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transform:scale(0.5);transition:opacity .1s,transform .2s}.vot-dialog-content-wrapper{display:flex;flex-direction:column;max-height:75vh;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-dialog-header-container:empty{padding:0 0 20px 0}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0}.vot-dialog-title{flex:1;font-size:115.3846153846%;font-weight:bold;line-height:1;padding-bottom:16px;padding-inline-end:20px;padding-inline-start:20px;padding-top:20px}.vot-dialog-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 20px;gap:16px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar,.vot-dialog-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-dialog-footer-container:empty{padding:20px 0 0 0}.vot-subtitles-widget{display:flex;justify-content:center;align-items:center;position:absolute;width:50%;max-height:100%;min-height:20%;z-index:100;left:25%;top:75%;pointer-events:none}.vot-subtitles{position:relative;max-width:100%;max-height:100%;width:max-content;background:var(--vot-subtitles-background, rgba(46, 47, 52, 0.8));color:var(--vot-subtitles-color, rgb(227, 227, 227));border-radius:1rem;pointer-events:all;padding:1rem;font-size:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color, rgb(33, 150, 243))}:root{--vot-font-family: "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system;--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-background: rgba(var(--vot-surface-rgb, 46, 47, 52), 0.8);--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{display:block}',""]);const s=r},"./node_modules/css-loader/dist/runtime/api.js":t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o="",n=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),n&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=t(e),n&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(t,o,n,i,a){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(n)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),o&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=o):c[2]=o),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},"./node_modules/css-loader/dist/runtime/noSourceMaps.js":t=>{"use strict";t.exports=function(t){return t[1]}},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":t=>{"use strict";var e=[];function o(t){for(var o=-1,n=0;n{"use strict";var e={};t.exports=function(t,o){var n=function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}e[t]=o}return e[t]}(t);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(t,e,o)=>{"use strict";t.exports=function(t){var e=o.nc;e&&t.setAttribute("nonce",e)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(o){!function(t,e,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(n,t,e.options)}(e,t,o)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},"./src/config/config.js":(t,e,o)=>{"use strict";o.d(e,{EY:()=>c,I1:()=>r,Rr:()=>s,e6:()=>i,ez:()=>a,jm:()=>u,kF:()=>d,rm:()=>h,sN:()=>l});var n=o("./src/utils/utils.js");const i="m3u8proxy.toil-dump.workers.dev",a="uk"===n.KQ?"vot-new.toil-dump.workers.dev":"vot.deno.dev",r="xtGCyGdTY2Jy6OMEKdTuXev3Twhkamgm",s="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36",l=.15,d="yandex",c="yandex",u={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},h={yandex:"https://translate.toil.cc/translate"}},"./src/localization/localizationProvider.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>r,V:()=>s});const n=JSON.parse('{"__version__":3,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}');var i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=["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"],s=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=a.i.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(a.i.syncGet("locale-phrases",""))}reset(){this.gmValues.forEach((t=>a.i.syncDelete(t)))}async update(t=!1){(t||2!==await a.i.get("locale-version",0,!0)||await a.i.get("locale-lang")!==this.lang)&&(i.Z.log("Updating locale..."),await fetch(`https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/src/localization/locales/${this.lang}.json`).then((t=>{if(200===t.status)return t.text();throw t.status})).then((async t=>{await a.i.set("locale-phrases",t),this.setLocaleFromJsonString(t);const e=this.getFromLocale(this.locale,"__version__");"number"==typeof e&&await a.i.set("locale-version",e),await a.i.set("locale-lang",this.lang)})).catch((async t=>{console.error("[VOT] [localizationProvider] failed get locale, cause:",t),this.setLocaleFromJsonString(await a.i.get("locale-phrases",""))})))}setLocaleFromJsonString(t){try{this.locale=JSON.parse(t)??{}}catch(t){console.error("[VOT] [localizationProvider]",t),this.locale={}}}getFromLocale(t,e){const o=e.split(".").reduce(((t,e)=>{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(n,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(n,t)??t}}},"./src/utils/debug.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>n});const n={log:(...t)=>{}}},"./src/utils/storage.js":(t,e,o)=>{"use strict";o.d(e,{i:()=>i});var n=o("./src/utils/debug.js");const i=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,n.Z.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);let n=window.localStorage.getItem(t);if("udemyData"===t&&"string"==typeof n)try{n=JSON.parse(n)}catch{n=e}return o?Number(n)??Number(e):n??e}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):new Promise((n=>{n(this.syncGet(t,e,o))}))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):("udemyData"===t&&(e=JSON.stringify(e)),window.localStorage.setItem(t,e))}async set(t,e){return this.gmSupport?await GM_setValue(t,e):new Promise((o=>{o(this.syncSet(t,e))}))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):new Promise((e=>{e(this.syncDelete(t))}))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","udemyData","audioProxy","showPiPButton","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():new Promise((t=>{t(this.syncList())}))}}},"./src/utils/utils.js":(t,e,o)=>{"use strict";o.d(e,{KQ:()=>a,PG:()=>l,QZ:()=>u,_v:()=>r,eL:()=>d,gJ:()=>s,qq:()=>c});var n=o("./src/localization/localizationProvider.js");const i=navigator.language||navigator.userLanguage,a=i?.substr(0,2)?.toLowerCase()??"en";String.prototype.format||(String.prototype.format=function(){var t=arguments;return this.replace(/{(\d+)}/g,(function(e,o){return void 0!==t[o]?t[o]:e}))});const r=t=>new Promise((e=>setTimeout(e,t))),s=(t,e)=>{const o=new URL(window.location.href);switch(t){case"piped":case"invidious":case"youtube":return o.pathname.match(/(?:watch|embed|shorts)\/([^/]+)/)?.[1]||o.searchParams.get("v");case"vk":return o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)?o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)[0].slice(1):o.searchParams.get("z")?o.searchParams.get("z").split("/")[0]:!(!o.searchParams.get("oid")||!o.searchParams.get("id"))&&`video-${Math.abs(o.searchParams.get("oid"))}_${o.searchParams.get("id")}`;case"nine_gag":case"9gag":case"gag":return o.pathname.match(/gag\/([^/]+)/)?.[1];case"twitch":if(/^m\.twitch\.tv$/.test(window.location.hostname)){const t=document.head.querySelector('link[rel="canonical"]');return t?.href.match(/videos\/([^/]+)/)?.[0]||o.pathname.slice(1)}if(/^player\.twitch\.tv$/.test(window.location.hostname))return`videos/${o.searchParams.get("video")}`;if(/^clips\.twitch\.tv$/.test(window.location.hostname)){const t=document.querySelector(".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']");return!!t&&`${t.href.replace("https://www.twitch.tv/","")}/clip/${o.searchParams.get("clip")}`}return o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)?o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)[0]:o.pathname.match(/(?:videos)\/([^/]+)/)?.[0];case"proxytok":return o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];case"tiktok":{let t=o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];if(!t){const o=e.closest(".xgplayer-playing, .tiktok-web-player"),n=o?.closest('div[data-e2e="recommend-list-item-container"]'),i=n?.querySelector('a[data-e2e="video-author-avatar"]');if(o&&i){const e=o.id?.match(/^xgwrapper-[0-9]+-(.*)$/)?.at(1),n=i.href?.match(/.*(@.*)$/)?.at(1);e&&n&&(t=`${n}/video/${e}`)}}return t}case"vimeo":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0]||o.pathname.match(/[^/]+$/)?.[0];case"xvideos":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0];case"pornhub":return o.searchParams.get("viewkey")||o.pathname.match(/embed\/([^/]+)/)?.[1];case"twitter":return o.pathname.match(/status\/([^/]+)/)?.[1];case"udemy":case"rumble":return o.pathname;case"facebook":return!!o.searchParams.get("v")&&o.searchParams.get("v");case"rutube":return o.pathname.match(/(?:video|embed)\/([^/]+)/)?.[1];case"coub":return o.pathname.includes("/view")?o.pathname.match(/view\/([^/]+)/)?.[1]:o.pathname.includes("/embed")?o.pathname.match(/embed\/([^/]+)/)?.[1]:document.querySelector(".coub.active")?.dataset?.permalink;case"bilibili":{const t=o.searchParams.get("bvid");if(t)return t;{let t=o.pathname.match(/video\/([^/]+)/)?.[1];return t&&o.search&&null!==o.searchParams.get("p")&&(t+=`/?p=${o.searchParams.get("p")}`),t}}case"mail_ru":if(o.pathname.startsWith("/v/")||o.pathname.startsWith("/mail/"))return o.pathname;if(o.pathname.match(/video\/embed\/([^/]+)/)){const t=document.querySelector(".b-video-controls__mymail-link");return!!t&&t?.href.split("my.mail.ru")?.[1]}return!1;case"bitchute":return o.pathname.match(/video\/([^/]+)/)?.[1];case"coursera":return o.pathname.match(/learn\/([^/]+)\/lecture\/([^/]+)/)?.[0];case"eporner":return o.pathname.match(/video-([^/]+)\/([^/]+)/)?.[0];case"peertube":return o.pathname.match(/\/w\/([^/]+)/)?.[0];case"dailymotion":{const t=Array.from(document.scripts).filter((t=>t.innerText.trim().includes("window.__PLAYER_CONFIG__ = {")));if(!t.length)return!1;try{let e=t[0].innerText.trim().replace("window.__PLAYER_CONFIG__ = ","");e.endsWith("};")&&(e=e.substring(0,e.length-1));const o=JSON.parse(e),n=o.context.embedder??o.context.http_referer;return console.log(n,o),n.match(/\/video\/([^/]+)/)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case"trovo":{if(!o.pathname.startsWith("/s/"))return!1;const t=o.searchParams.get("vid");if(!t)return!1;const e=o.pathname.match(/([^/]+)\/([\d]+)/)?.[0];return!!e&&`${e}?vid=${t}`}case"yandexdisk":return o.pathname.match(/\/[i|s|d]\/([^/]+)/)?.[1];default:return!1}};function l(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?n.V.get("translationTakeMoreThanHour"):e>=10&&e%10?n.V.get("translationTakeApproximatelyMinutes").format(e):1==e||0==e&&o>0?n.V.get("translationTakeAboutMinute"):n.V.get("translationTakeApproximatelyMinute").format(e)}function d(t){return t.toLowerCase().split(";")[0].trim().split("-")[0].split("_")[0]}function c(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function u(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}},"./src/yandexRequest-cloudflare.js":(t,e,o)=>{"use strict";o.r(e),o.d(e,{default:()=>r});var n=o("./src/config/config.js"),i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=async function(t,e,o,r){let s,l;try{i.Z.log("yandexRequest:",t);const r={method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({headers:{Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf","User-Agent":n.Rr,Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors",...o},body:Array.from(e)})},d=await a.i.get("proxyWorkerHost",n.ez);s=await fetch(`https://${d}${t}`,r),i.Z.log("yandexRequest:",s.status,s),l=await s.arrayBuffer()}catch(t){console.error("[VOT]",t),s={status:-1},l=t}r(200==s.status,l)}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={id:n,exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nc=void 0,(()=>{"use strict";var t=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),e=o.n(t),n=o("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),i=o.n(n),a=o("./node_modules/style-loader/dist/runtime/insertBySelector.js"),r=o.n(a),s=o("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),l=o.n(s),d=o("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),c=o.n(d),u=o("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),h=o.n(u),p=o("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss"),g={};g.styleTagTransform=h(),g.setAttributes=l(),g.insert=r().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=c(),e()(p.Z,g),p.Z&&p.Z.locals&&p.Z.locals;var v=o("./src/localization/localizationProvider.js");class m extends Error{constructor(t){super(v.V.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=v.V.get(t)}}var b=o("./src/utils/debug.js");const f=["ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],y=["kk","bn","pt","cs","hi","mr","te","tr","ms","vi","ta","jv","ur","fa","gu","id","uk","da","fi","uz","pl","sv","az","sq","am","hy","af","eu","my","bg","bs","cy","hu","gl","el","zu","kn","ca","km","lo","mk","ml","mt","mn","ne","nl","pa","ro","sr","si","sk","sl","sw","su","hr","et"],w=["ru","en","kk"];var x=o("./src/utils/utils.js"),S=o("./src/config/config.js"),k=o("./src/utils/storage.js");async function T(t,e){const o=new AbortController,n=setTimeout((()=>o.abort()),3e3);try{return await fetch(t,{...e,signal:o.signal})}catch(t){return console.error("Fetch timed-out. Error:",t),t}finally{clearTimeout(n)}}const V={async translate(t,e){try{const o=await T(S.rm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t,e){try{const o=await T(S.jm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.lang??"en"}catch(t){return console.error("Error translating text:",t),"en"}}},M={async detect(t){try{const e=await fetch(S.jm.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}};async function L(t,e="",o="ru"){if("yandex"===await k.i.get("translationService",S.kF)){const n=e&&o?`${e}-${o}`:o;return await V.translate(t,n)}return t}const O=["yandex"],P=["yandex","rust-server"];function E(){return/^m\.youtube\.com$/.test(window.location.hostname)}function C(){return window.location.pathname.startsWith("/shorts/")?E()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function A(){const t=C();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function B(){const t=C();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const _=function(){const t=C();return t?.getVolume?t.getVolume.call()/100:1},F=function(){const t=A();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?(0,x.eL)(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),b.Z.log("youtube subtitles:",e),e},q=async function(){const t=C(),e=A(),o=B(),{author:n,title:i}=o??{},{shortDescription:a,isLive:r,isLiveContent:s,isUpcoming:l}=e?.videoDetails??{},d=!(!r&&!l||s);let c=await async function(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return(0,x.eL)(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return(0,x.eL)(t.languageCode)}if(!n||!o)return"en";const a=[/https?:\/\/\S+/g,/Auto-generated by YouTube/g,/Provided to YouTube by/g,/Released on/g],r=[n.split("\n").filter((t=>!a.some((e=>e.test(t))))).join("\n").replace(/[^\p{L}\s]/gu," ").trim().replace(/\s+/g," ").slice(0,250),o].join(" ");return await async function(t){switch(await k.i.get("detectService",S.EY)){case"yandex":return await V.detect(t);case"rust-server":return await M.detect(t);default:return"en"}}(r)}(t,e,i,a);f.includes(c)||(c="en");const u={isLive:!!r,isPremiere:d,title:i,description:a,author:n,detectedLanguage:c};return b.Z.log("youtube video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},R=function(t){const e=C();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},z=function(t,e){b.Z.log("videoSeek",e);const o=(C()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},D=new protobuf.Type("VideoTranslationHelpObject").add(new protobuf.Field("target",1,"string")).add(new protobuf.Field("targetUrl",2,"string")),I=new protobuf.Type("VideoTranslationRequest").add(new protobuf.Field("url",3,"string")).add(new protobuf.Field("deviceId",4,"string")).add(new protobuf.Field("firstRequest",5,"bool")).add(new protobuf.Field("duration",6,"double")).add(new protobuf.Field("unknown2",7,"int32")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("unknown3",9,"int32")).add(new protobuf.Field("unknown4",10,"int32")).add(new protobuf.Field("translationHelp",11,"VideoTranslationHelpObject","repeated")).add(new protobuf.Field("responseLanguage",14,"string")).add(new protobuf.Field("unknown5",15,"int32")),j=new protobuf.Type("VideoSubtitlesRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")),N=new protobuf.Type("VideoStreamRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")).add(new protobuf.Field("responseLanguage",3,"string")),$=new protobuf.Type("VideoStreamPingRequest").add(new protobuf.Field("pingId",1,"int32")),H=new protobuf.Type("VideoTranslationResponse").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("duration",2,"double")).add(new protobuf.Field("status",4,"int32")).add(new protobuf.Field("remainingTime",5,"int32")).add(new protobuf.Field("unknown0",6,"int32")).add(new protobuf.Field("unknown1",7,"string")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("message",9,"string")),Z=new protobuf.Type("VideoSubtitlesObject").add(new protobuf.Field("language",1,"string")).add(new protobuf.Field("url",2,"string")).add(new protobuf.Field("unknown2",3,"int32")).add(new protobuf.Field("translatedLanguage",4,"string")).add(new protobuf.Field("translatedUrl",5,"string")).add(new protobuf.Field("unknown5",6,"int32")).add(new protobuf.Field("unknown6",7,"int32")),U=new protobuf.Type("VideoSubtitlesResponse").add(new protobuf.Field("unknown0",1,"int32")).add(new protobuf.Field("subtitles",2,"VideoSubtitlesObject","repeated")),W=new protobuf.Type("VideoStreamObject").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("timestamp",2,"int64")),G=new protobuf.Type("VideoStreamResponse").add(new protobuf.Field("interval",1,"int32")).add(new protobuf.Field("translatedInfo",2,"VideoStreamObject")).add(new protobuf.Field("pingId",3,"int32")),Y=(new protobuf.Root).define("yandex").add(D).add(I).add(H).add(j).add(Z).add(U).add($).add(N).add(W).add(G),K=(t,e,o,n,i)=>Y.VideoTranslationRequest.encode({url:t,firstRequest:!0,duration:e,unknown2:1,language:o,unknown3:0,unknown4:0,translationHelp:i,responseLanguage:n,unknown5:0}).finish(),Q=t=>Y.VideoTranslationResponse.decode(new Uint8Array(t)),J=(t,e)=>Y.VideoSubtitlesRequest.encode({url:t,language:e}).finish(),X=t=>Y.VideoSubtitlesResponse.decode(new Uint8Array(t)),tt=t=>Y.VideoStreamPingRequest.encode({pingId:t}).finish(),et=(t,e,o)=>Y.VideoStreamRequest.encode({url:t,language:e,responseLanguage:o}).finish(),ot=t=>Y.VideoStreamResponse.decode(new Uint8Array(t)),nt=["invidious.snopyta.org","yewtu.be","invidious.kavin.rocks","vid.puffyan.us","invidious.namazso.eu","inv.riverside.rocks","yt.artemislena.eu","invidious.flokinet.to","invidious.esmailelbob.xyz","y.com.sb","invidious.nerdvpn.de","inv.vern.cc","invidious.slipfox.xyz","invidio.xamh.de","invidious.dhusch.de"],it=["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"];function at(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),e.innerHTML=t,e}function rt(t){const e=parseFloat(t.value),o=""===t.min?0:parseFloat(t.min),n=(e-o)/((""===t.max?100:parseFloat(t.max))-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function st(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),{container:i,input:a,label:r}}function lt(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=at('');d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const c=document.createElement("vot-block");return c.classList.add("vot-dialog-title"),c.innerHTML=t,e.appendChild(o),e.appendChild(n),n.appendChild(i),i.appendChild(a),i.appendChild(r),i.appendChild(s),a.appendChild(l),a.appendChild(d),l.appendChild(c),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:c}}function dt(t,e,o,n={}){const i=n.onSelectCb||function(){},a=n.labelElement||"";let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.appendChild(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.innerText=t,void 0===t&&(d.innerText=o.find((t=>!0===t.selected))?.label);const c=document.createElement("vot-block");return c.classList.add("vot-select-arrow-icon"),c.innerHTML='',l.append(d,c),l.onclick=()=>{const t=lt(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.innerText=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{a.target.inert||(n.childNodes.forEach((t=>t.dataset.votSelected=!1)),o.forEach((e=>e.selected=e.value===t.value)),e.dataset.votSelected=!0,d.innerText=t.label,await i(a))},n.appendChild(e)}const a=st(v.V.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();Array.from(r).forEach((t=>t.hidden=!t.innerText.toLowerCase().includes(e)))},t.bodyContainer.append(a.container,n),r=n.childNodes,t.backdrop.onclick=t.closeButton.onclick=()=>{t.container.remove(),r=[]}},s.append(l),{container:s,title:d,arrowIcon:c,labelElement:a,setTitle:t=>{d.innerText=t},setSelected:t=>{Array.from(r).filter((t=>!t.inert)).forEach((e=>e.dataset.votSelected=e.dataset.votValue===t)),o.forEach((e=>e.selected=String(e.value)===t))},updateItems:t=>{o=t}}}const ct={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.innerHTML=t,o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.innerHTML=t;const i=document.createElement("vot-block");return i.innerHTML=e,o.appendChild(n),o.appendChild(i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.innerHTML=t,e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.innerHTML=t,e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.innerHTML=t,e},createIconButton:at,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.innerHTML=t,o.appendChild(n),o.appendChild(i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),a.addEventListener("input",(t=>rt(t.target))),rt(a),{container:i,input:a,label:r}},createTextfield:st,createDialog:lt,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),o.innerHTML='';const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),i.innerHTML='';const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),r.innerHTML='';const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.innerHTML=t,e.appendChild(o),e.appendChild(n),e.appendChild(i),e.appendChild(a),e.appendChild(r),o.appendChild(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.innerHTML=t,e.appendChild(o),o.appendChild(n),o.appendChild(i),o.appendChild(a),n.appendChild(r),r.appendChild(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.innerText=t,e},createVOTSelect:dt,createVOTLanguageSelect:function(t){const e=t.fromTitle||"#UNDEFINED",o=t.fromDialogTitle||"#UNDEFINED",n=t.fromItems||[],i=t.fromOnSelectCB||function(){},a=t.toTitle||"#UNDEFINED",r=t.toDialogTitle||"#UNDEFINED",s=t.toItems||[],l=t.toOnSelectCB||function(){},d=document.createElement("vot-block");d.classList.add("vot-lang-select");const c=dt(e,o,n,{onSelectCb:i}),u=document.createElement("vot-block");u.classList.add("vot-lang-select-icon"),u.innerHTML='';const h=dt(a,r,s,{onSelectCb:l});return d.append(c.container,u,h.container),{container:d,fromSelect:c,icon:u,toSelect:h}},updateSlider:rt};function ut(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}var ht=o("./node_modules/bowser/es5.js");function pt(t){const e=([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)));return t?e:e.toUpperCase()}async function gt(t){const e=new TextEncoder("utf-8"),o=await window.crypto.subtle.importKey("raw",e.encode(S.I1),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),n=await window.crypto.subtle.sign("HMAC",o,t);return Array.from(new Uint8Array(n),(t=>t.toString(16).padStart(2,"0"))).join("")}function vt(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1],r=o[o.length-1],s=r?.alignRange?.end??0,l=s+n.text.length;if(o.push(Object.assign(Object.assign({},n),{alignRange:{start:s,end:l}})),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function mt(t,e){const o=t.text.split(new RegExp("([\n \t])")).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a,l=r?i-s:n;return Object.assign(Object.assign({},e),{startMs:s,durationMs:l})}))}class bt{dragging=!1;subtitlesContainerRect=null;containerRect=null;offsetX=null;offsetY=null;lastContent=null;highlightWords=!1;subtitles=null;maxLength=300;maxLengthRegexp=/.{1,300}(?:\s|$)/g;constructor(t,e,o){this.site=o,this.video=t,"youtube"===this.site.host&&"mobile"!==this.site.additionalData?this.container=e.parentElement:this.container=e,this.votSubtitlesContainer=document.createElement("vot-block"),this.votSubtitlesContainer.classList.add("vot-subtitles-widget"),this.container.appendChild(this.votSubtitlesContainer),this.onMouseDownBound=this.onMouseDown.bind(this),this.onMouseUpBound=this.onMouseUp.bind(this),this.onMouseMoveBound=this.onMouseMove.bind(this),this.onTimeUpdateBound=this.onTimeUpdate.bind(this),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound)}release(){this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.votSubtitlesContainer.remove()}onMouseDown(t){this.votSubtitlesContainer.contains(t.target)&&(this.subtitlesContainerRect=this.votSubtitlesContainer.getBoundingClientRect(),this.containerRect=this.container.getBoundingClientRect(),this.offsetX=t.clientX-this.subtitlesContainerRect.x,this.offsetY=t.clientY-this.subtitlesContainerRect.y,this.dragging=!0)}onMouseUp(){this.dragging=!1}onMouseMove(t){if(this.dragging){t.preventDefault();const e=t.clientX-this.offsetX,o=t.clientY-this.offsetY,n=o>=this.containerRect.top,i=o+this.subtitlesContainerRect.height<=this.containerRect.bottom,a=e>=this.containerRect.left,r=e+this.subtitlesContainerRect.width<=this.containerRect.right;this.votSubtitlesContainer.style.top=n&&i?o-this.containerRect.y+"px":n?this.containerRect.height-this.subtitlesContainerRect.height+"px":"0px",this.votSubtitlesContainer.style.left=a&&r?e-this.containerRect.x+"px":a?this.containerRect.width-this.subtitlesContainerRect.width+"px":"0px"}}onTimeUpdate(){this.update()}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,this.votSubtitlesContainer.innerHTML="")}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords!==!!t&&(this.highlightWords=!!t,this.update())}update(){if(!this.video)return;let t="",e=this.highlightWords&&this.subtitles?.containsTokens;const o=1e3*this.video.currentTime,n=this.subtitles?.subtitles?.findLast((t=>t.startMsthis.maxLength){let t=[],n=0,i=0,a=0;for(let o=0;othis.maxLength){let r=e.slice(n,i+1);r.at(0)&&" "===r.at(0).text&&(r=r.slice(1)),r.at(-1)&&" "===r.at(-1).text&&(r=r.slice(0,r.length-1)),t.push({startMs:e[n].startMs,durationMs:e[i].startMs+e[i].durationMs-e[n].startMs,tokens:r}),n=o,a=0}i=o}for(let n=0;ne||o>n.startMs-100&&e-o<275?'class="passed"':""}>${n.text}`}}else if(n.text.length>this.maxLength){let e=n.text.match(this.maxLengthRegexp),i=n.durationMs/e.length;for(let a=0;a${t.replace("\\n","
")}`:"")}}function ft(){return yt()?.player}function yt(){return document.querySelector(".vjs-v6")}const wt=async function(t="en"){let e=null;const o=ft(),{duration:n}=o?.cache_||{},{courseId:i,tracks:a,sources:r}=o?.options_||{},s=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(r),l=await async function(t){const e=await fetch(`https://www.coursera.org/api/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}(i);let d=l?.primaryLanguageCodes?.[0];d=d?(0,x.eL)(d):"en",f.includes(d)||(d="en");const c=function(t,e,o){let n=t?.find((t=>(0,x.eL)(t.srclang)===e));return n||(n=t?.find((t=>(0,x.eL)(t.srclang)===o))||t?.[0]),n?.src}(a,d,t);console.log(`videoURL: ${s}, subtitlesURL: ${c}`),c&&s?e=[{target:"video_file_url",targetUrl:s},{target:"subtitles_file_url",targetUrl:`https://www.coursera.org${c}`}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${s}, subtitlesURL: ${c}`);const u={duration:n,detectedLanguage:d,translationHelp:e};return b.Z.log("coursera video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},xt="https://www.udemy.com/api-2.0";async function St(t){const e=await fetch(`${xt}/courses/${t}/?`+new URLSearchParams({"fields[course]":"locale",use_remote_version:"true",caching_intent:"true"}));return await e.json()}async function kt(t,e,o){if(!(t.expires+2592e6>(new Date).getTime()&&t.accessToken))return void console.error(v.V.get("udemyAccessTokenExpired"));const n=`Bearer ${t.accessToken}`,i=await fetch(`${xt}/users/me/subscribed-courses/${e}/lectures/${o}/?`+new URLSearchParams({"fields[lecture]":"asset","fields[asset]":"length,media_sources,captions"}),{headers:{"x-udemy-authorization":n,authorization:n}});return await i.json()}function Tt(){return Mt()?.player}function Vt(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(v.V.get("udemyModuleArgsNotFound")),{})}function Mt(){return document.querySelector(".vjs-v7")}const Lt=async function(t,e="en"){let o=null;const n=Tt();b.Z.log("udemyData",t);const i=Vt();b.Z.log("moduleData: ",i);const a=i.courseId,r=window.location.pathname.match(/learn\/lecture\/([^/]+)/)?.[1];b.Z.log(`CourseId: ${a}, lectureId: ${r}`);const s=await St(a);b.Z.log("courseLang Data:",s);const l=await kt(t,a,r);console.log("lecture Data:",l);let d=s?.locale?.locale;d=d?(0,x.eL)(d):"en",f.includes(d)||(d="en");const c=l?.asset?.length||n?.cache_?.duration,u=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(l?.asset?.media_sources)||function(){const t=Mt()?.querySelector("video")?.src;return!t?.startsWith("blob:")&&t}(),h=function(t,e,o){let n=t?.find((t=>(0,x.eL)(t.locale_id)===e));return n||(n=t?.find((t=>(0,x.eL)(t.locale_id)===o))||t?.[0]),n?.url}(l?.asset?.captions,d,e);console.log(`videoURL: ${u}, subtitlesURL: ${h}`),h&&u?o=[{target:"video_file_url",targetUrl:u},{target:"subtitles_file_url",targetUrl:h}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${u}, subtitlesURL: ${h}`);const p={duration:c,detectedLanguage:d,translationHelp:o};return b.Z.log("udemy video data:",p),console.log("[VOT] Detected language: ",p.detectedLanguage),p};o("./node_modules/requestidlecallback-polyfill/index.js");class Ot{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}function Pt(t){return Array.from(t).map((t=>{const e=[];return t instanceof HTMLVideoElement&&e.push(t),t instanceof HTMLElement&&e.push(...Array.from(t.querySelectorAll("video"))),t?.shadowRoot?.querySelectorAll&&e.push(...Array.from(t.shadowRoot.querySelectorAll("video"))),e})).flat()}const Et=[{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:".player-container"},{host:"youtube",url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:"tiktok",url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:"proxytok",url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tik.hostux.net","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{additionalData:"mobile",host:"twitch",url:"https://twitch.tv/",match:/^m.twitch.tv$/,selector:"main > div > section > div > div > div"},{host:"twitch",url:"https://twitch.tv/",match:t=>t.host.includes("clips.twitch.tv")||t.host.includes("player.twitch.tv")&&null===t.searchParams.get("channel")||t.host.includes("twitch.tv")&&(t.pathname.startsWith("/videos")||t.pathname.startsWith("/embed")||t.pathname.includes("/clip")),selector:".video-ref"},{host:"xvideos",url:"https://www.xvideos.com/",match:/^www.xvideos.com$/,selector:".video-bg-pic"},{host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{additionalData:"mobile",host:"vk",url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{host:"vk",url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:"vimeo",url:"https://vimeo.com/",match:/^(player.)?vimeo.com$/,selector:".player"},{host:"nine_gag",url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:"coub",url:"https://coub.com/view/",match:/^coub.com$/,selector:".viewer__player"},{host:"bitchute",url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".plyr__video-wrapper"},{host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap"},{additionalData:"old",host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:"twitter",url:"https://twitter.com/i/status/",match:/^twitter.com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:"mail_ru",url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:"coursera",url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6"},{host:"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)'},{host:"invidious",url:"https://youtu.be/",match:nt,selector:"#player"},{host:"piped",url:"https://youtu.be/",match:it,selector:".shaka-video-container"},{host:"rumble",url:"https://rumble.com",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:"eporner",url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:"peertube",url:"tube.shanti.cafe",match:["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"],selector:".vjs-v7"},{host:"dailymotion",url:"https://www.dailymotion.com/video/",match:/^geo.dailymotion.com$/,selector:".player"},{host:"trovo",url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:"yandexdisk",url:"https://disk.yandex.ru/i/",match:/^disk.yandex.ru$/,selector:"yaplayertag > div:nth-of-type(1)"}],Ct=ht.getParser(window.navigator.userAgent).getResult(),At=[...nt,...it],Bt=["playing","ratechange","play","waiting","pause"];function _t(t,e,o=!1){return t.map((t=>({label:`${o&&!w.includes(t)?"❌ ":""}${v.V.get("langs")[t]??t.toUpperCase()}`,value:t,selected:e===t})))}var Ft=!1;class qt{translateFromLang="en";translateToLang=x.KQ;timer;ytData="";videoData="";firstPlay=!0;audio=new Audio;hls=(0,x.QZ)();downloadTranslationUrl=null;downloadSubtitlesUrl=null;autoRetry;streamPing;volumeOnStart;tempOriginalVolume;tempVolume;subtitlesList=[];subtitlesListVideoId=null;videoLastSrcObject=null;constructor(t,e,o){b.Z.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.handleSrcChangedBound=this.handleSrcChanged.bind(this),this.srcObserver=new MutationObserver(this.handleSrcChangedBound),this.srcObserver.observe(this.video,{attributeFilter:["src","currentSrc"]}),this.srcObjectInterval=setInterval((async()=>{this.videoLastSrcObject!==this.video.srcObject&&(this.videoLastSrcObject=this.video.srcObject,await this.handleSrcChanged())}),100),this.stopTranslationBound=this.stopTranslation.bind(this),this.handleVideoEventBound=this.handleVideoEvent.bind(this),this.changeOpacityOnEventBound=this.changeOpacityOnEvent.bind(this),this.resetTimerBound=this.resetTimer.bind(this),this.init()}async init(){if(this.initialized)return;this.data={autoTranslate:await k.i.get("autoTranslate",0,!0),dontTranslateLanguage:await k.i.get("dontTranslateLanguage",x.KQ),dontTranslateYourLang:await k.i.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:await k.i.get("autoSetVolumeYandexStyle",1,!0),autoVolume:await k.i.get("autoVolume",S.sN,!0)/100,showVideoSlider:await k.i.get("showVideoSlider",1,!0),syncVolume:await k.i.get("syncVolume",0,!0),subtitlesMaxLength:await k.i.get("subtitlesMaxLength",300,!0),highlightWords:await k.i.get("highlightWords",0,!0),responseLanguage:await k.i.get("responseLanguage",x.KQ),defaultVolume:await k.i.get("defaultVolume",100,!0),udemyData:await k.i.get("udemyData",{accessToken:"",expires:0}),audioProxy:await k.i.get("audioProxy","uk"===x.KQ?1:0,!0),showPiPButton:await k.i.get("showPiPButton",0,!0),translateAPIErrors:await k.i.get("translateAPIErrors",1,!0),translationService:await k.i.get("translationService",S.kF),detectService:await k.i.get("detectService",S.EY),m3u8ProxyHost:await k.i.get("m3u8ProxyHost",S.e6),proxyWorkerHost:await k.i.get("proxyWorkerHost",S.ez)},this.videoData=await this.getVideoData(),console.log("[db] data from db: ",this.data),this.subtitlesWidget=new bt(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.initUI(),this.initUIEvents();const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t,this.votButton.label.innerHTML=e}initUI(){this.votButton=ct.createVOTButton(v.V.get("translateVideo")),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!(0,x.qq)()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!(0,x.qq)()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=ct.createVOTMenu(v.V.get("VOTSettings")),this.container.appendChild(this.votMenu.container),this.votDownloadButton=ct.createIconButton(''),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=ct.createIconButton(''),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=ct.createIconButton(''),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=ct.createVOTLanguageSelect({fromTitle:v.V.get("langs")[this.video.detectedLanguage],fromDialogTitle:v.V.get("videoLanguage"),fromItems:[{label:v.V.get("langs").auto,value:"auto",selected:""},..._t(f,this.videoData.detectedLanguage)],fromOnSelectCB:async t=>{b.Z.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:v.V.get("langs")[this.video.responseLanguage],toDialogTitle:v.V.get("translationLanguage"),toItems:[..._t(f,this.videoData.responseLanguage,!0),{label:"─────────",value:"separator",disabled:!0},..._t(y,this.videoData.responseLanguage,!0)],toOnSelectCB:async t=>{const e=t.target.dataset.votValue;b.Z.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await k.i.set("responseLanguage",this.data.responseLanguage),b.Z.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=ct.createVOTSelect(v.V.get("VOTSubtitlesDisabled"),v.V.get("VOTSubtitles"),[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=ct.createSlider(`${v.V.get("VOTVolume")}: ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=ct.createSlider(`${v.V.get("VOTVolumeTranslation")}: ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=ct.createDialog(v.V.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=ct.createHeader(v.V.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=ct.createCheckbox(v.V.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=ct.createVOTSelect(v.V.get("langs")[k.i.syncGet("dontTranslateLanguage",x.KQ)],v.V.get("VOTDontTranslateYourLang"),_t(f,k.i.syncGet("dontTranslateLanguage",x.KQ)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await k.i.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:ct.createCheckbox(v.V.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.votAutoSetVolumeCheckbox=ct.createCheckbox(`${v.V.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=ct.createSlider(`${100*(this.data?.autoVolume??S.sN)}%`,100*(this.data?.autoVolume??S.sN),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=ct.createCheckbox(v.V.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votUdemyDataTextfield=ct.createTextfield(v.V.get("VOTUdemyData"),this.data?.udemyData?.accessToken??""),this.votUdemyDataTextfield.container.hidden="udemy"!==this.site.host,this.votSettingsDialog.bodyContainer.appendChild(this.votUdemyDataTextfield.container),this.votSyncVolumeCheckbox=ct.createCheckbox(v.V.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSyncVolumeCheckbox.container.hidden="youtube"!==this.site.host||"mobile"===this.site.additionalData,this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=ct.createVOTSelect(k.i.syncGet("translationService",S.kF),v.V.get("VOTTranslationService"),_t(O,k.i.syncGet("translationService",S.kF)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await k.i.set("translationService",this.data.translationService)},labelElement:ct.createCheckbox(v.V.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===v.V.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=ct.createVOTSelect(k.i.syncGet("detectService",S.EY),v.V.get("VOTDetectService"),_t(P,k.i.syncGet("detectService",S.EY)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await k.i.set("detectService",this.data.detectService)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=ct.createHeader(v.V.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesMaxLengthSlider=ct.createSlider(`${v.V.get("VOTSubtitlesMaxLength")}: ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesHighlightWordsCheckbox=ct.createCheckbox(v.V.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votProxyHeader=ct.createHeader(v.V.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=ct.createTextfield(v.V.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,S.e6),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=ct.createTextfield(v.V.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,S.ez),this.votProxyWorkerHostTextfield.container.hidden=!1,this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=ct.createCheckbox(v.V.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votAudioProxyCheckbox.container.hidden=!1,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=ct.createHeader(v.V.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=ct.createVOTSelect(v.V.get("langs")[k.i.syncGet("locale-lang-override","auto")],v.V.get("VOTMenuLanguage"),_t(v.Z,k.i.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await k.i.set("locale-lang-override",t.target.dataset.votValue)},labelElement:ct.createVOTSelectLabel(v.V.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=ct.createCheckbox(v.V.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!(0,x.qq)(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=ct.createInformation(`${v.V.get("VOTVersion")}:`,`cloudflare ${GM_info.script.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=ct.createInformation(`${v.V.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=ct.createInformation(`${v.V.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=ct.createInformation(`${v.V.get("VOTBrowser")}:`,`${Ct.browser.name} ${Ct.browser.version} (${Ct.os.name} ${Ct.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=ct.createButton(v.V.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{if(this.audio.src)return b.Z.log("[click translationBtn] audio.src is not empty"),void this.stopTraslate();try{b.Z.log("[click translationBtn] trying execute translation");const t=(0,x.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");await this.translateExecutor(t)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}})),this.votButton.pipButton.addEventListener("click",(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(()=>{console.log(this.downloadSubtitlesUrl),this.downloadSubtitlesUrl&&window.open(this.downloadSubtitlesUrl,"_blank").focus()})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(void 0===document.fullscreen||document.fullscreen)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.mozCancelFullscreen&&document.mozCancelFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);if(this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`,this.setVideoVolume(e/100),1===this.data.syncVolume){const t=Number(this.votVideoTranslationVolumeSlider.input.value),o=ut(this.audio,e,t,this.tempOriginalVolume);this.votVideoTranslationVolumeSlider.input.value=o,this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ct.updateSlider(this.votVideoTranslationVolumeSlider.input),this.tempVolume=o,this.tempOriginalVolume=e}})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(async t=>{this.data.defaultVolume=Number(t.target.value),await k.i.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${this.data.defaultVolume}%`,this.audio.volume=this.data.defaultVolume/100,1===this.data.syncVolume&&this.syncTranslationWithVideo(this.data.defaultVolume)})),this.votAutoTranslateCheckbox.input.addEventListener("change",(async t=>{this.data.autoTranslate=Number(t.target.checked),await k.i.set("autoTranslate",this.data.autoTranslate),b.Z.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(async t=>{this.data.dontTranslateYourLang=Number(t.target.checked),await k.i.set("dontTranslateYourLang",this.data.dontTranslateYourLang),b.Z.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await k.i.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),b.Z.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})),this.votAutoSetVolumeSlider.input.addEventListener("input",(async t=>{const e=Number(t.target.value);this.data.autoVolume=e/100,await k.i.set("autoVolume",e),this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(async t=>{this.data.showVideoSlider=Number(t.target.checked),await k.i.set("showVideoSlider",this.data.showVideoSlider),b.Z.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})),this.votUdemyDataTextfield.input.addEventListener("change",(async t=>{this.data.udemyData={accessToken:t.target.value,expires:(new Date).getTime()},await k.i.set("udemyData",this.data.udemyData),b.Z.log("udemyData value changed. New value: ",this.data.udemyData),window.location.reload()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.syncVolume=Number(t.target.checked),await k.i.set("syncVolume",this.data.syncVolume),b.Z.log("syncVolume value changed. New value: ",this.data.syncVolume)})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(async t=>{this.data.translateAPIErrors=Number(t.target.checked),await k.i.set("translateAPIErrors",this.data.translateAPIErrors),b.Z.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(async t=>{this.data.subtitlesMaxLength=Number(t.target.value),await k.i.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").innerHTML=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(async t=>{this.data.highlightWords=Number(t.target.checked),await k.i.set("highlightWords",this.data.highlightWords),b.Z.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(async t=>{this.data.showPiPButton=Number(t.target.checked),await k.i.set("showPiPButton",this.data.showPiPButton),b.Z.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!(0,x.qq)()||!this.data.showPiPButton,this.votButton.separator2.hidden=!(0,x.qq)()||!this.data.showPiPButton})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(async t=>{this.data.m3u8ProxyHost=t.target.value||S.e6,await k.i.set("m3u8ProxyHost",this.data.m3u8ProxyHost),b.Z.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(async t=>{this.data.proxyWorkerHost=t.target.value||S.ez,await k.i.set("proxyWorkerHost",this.data.proxyWorkerHost),b.Z.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),window.location.reload()})),this.votAudioProxyCheckbox.input.addEventListener("change",(async t=>{this.data.audioProxy=Number(t.target.checked),await k.i.set("audioProxy",this.data.audioProxy),b.Z.log("audioProxy value changed. New value: ",this.data.audioProxy)})),this.votResetSettingsButton.addEventListener("click",(async()=>{v.V.reset(),(await k.i.list()).filter((t=>!v.V.gmValues.includes(t))).forEach((t=>k.i.syncDelete(t))),window.location.reload()}))}releaseExtraEvents(){clearInterval(this.resizeInterval),this.resizeObserver?.disconnect(),"youtube"===this.site.host&&"mobile"!==this.site.additionalData&&this.syncVolumeObserver?.disconnect(),this.extraEvents?.forEach((t=>{t.element.removeEventListener(t.event,t.handler)}))}initExtraEvents(){this.extraEvents=[];const t=(t,e,o)=>{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{o.forEach((o=>{t(e,o,n)}))};if(this.resizeObserver=new ResizeObserver((t=>{t.forEach((t=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${t.contentRect.height}px`)}))})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),this.resizeInterval=setInterval((()=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`)}),500),"youtube"===this.site.host&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{t.forEach((t=>{"attributes"===t.type&&"aria-valuenow"===t.attributeName&&this.syncVideoVolumeSlider()}))}));const t=document.querySelector(".ytp-volume-panel");t&&this.syncVolumeObserver.observe(t,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0})}let o;document.addEventListener("click",(t=>{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),c=a.contains(e),u=r?.contains(e)??!1;b.Z.log(`[document click] ${s} ${l} ${d} ${c} ${u}`),s||l||c||u||(d||this.logout(0),this.votMenu.container.hidden=!0)})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".video-element-wrapper-js > div"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimerBound),t(this.votButton.container,"mousemove",this.changeOpacityOnEventBound),t(this.votMenu.container,"mousemove",this.changeOpacityOnEventBound),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEventBound),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),t(this.video,"abort",(()=>{b.Z.log("lipsync mode is abort"),this.stopTranslation(),this.videoData=""})),t(this.video,"progress",(async()=>{if(!this.firstPlay||1!==this.data.autoTranslate)return;const t=(0,x.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");try{await this.translateExecutor(t),this.firstPlay=!1}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t),this.firstPlay=!1}}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer(){clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),2e3)}changeOpacityOnEvent(t){clearTimeout(this.timer),this.logout(1),t.stopPropagation()}async changeSubtitlesLang(t){if(b.Z.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(v.V.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.downloadSubtitlesUrl=null;else{const e=await async function(t){let e=!1,o=await Promise.race([new Promise((async t=>{await(0,x._v)(5e3),e||console.error("[VOT] Failed to fetch subtitles. Reason: timeout"),e=!0,t([])})),new Promise((async o=>{b.Z.log("Fetching subtitles:",t),await fetch(t.url).then((t=>t.json())).then((t=>{e=!0,o(t)})).catch((t=>{console.error("[VOT] Failed to fetch subtitles. Reason:",t),e=!0,o({containsTokens:!1,subtitles:[]})}))}))]);return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^ +| +$/g,""))).join(" ");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(const i of t.subtitles){let a;if(i?.tokens?.length){if("yandex"!==e)return console.warn("[VOT] Unsupported subtitles tokens type: ",e),t.containsTokens=!1,null;a=vt(i)}else a=mt(i,n);n=a[a.length-1],o.push(Object.assign(Object.assign({},i),{tokens:a}))}return t.containsTokens=!0,o}(o,t.source),console.log("[VOT] subtitles:",o),o}(this.subtitlesList.at(parseInt(t)));this.subtitlesWidget.setContent(e),this.votDownloadSubtitlesButton.hidden=!1,this.downloadSubtitlesUrl=this.subtitlesList.at(parseInt(t))?.url}}async updateSubtitlesLangSelect(){const t=[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(v.V.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${v.V.get("VOTTranslatedFrom")} ${v.V.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${v.V.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){await this.changeSubtitlesLang("disabled");const t=(0,x.gJ)(this.site.host,this.video);if(!t)return console.error(`[VOT] ${v.V.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,void await this.updateSubtitlesLangSelect();this.subtitlesListVideoId!==t&&(this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),this.subtitlesList=await async function(t,e,n){const i="youtube"===t.host?F():[];let a=!1;const r=[...await Promise.race([new Promise((async t=>{await(0,x._v)(5e3),a||console.error("[VOT] Failed get yandex subtitles. Reason: timeout"),a=!0,t([])})),new Promise((i=>{!async function(t,e,n){try{b.Z.log("requestVideoSubtitles");const i=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const a=J(t,e);await i("/video-subtitles/get-subtitles",a,{"Vsubs-Signature":await gt(a),"Sec-Vsubs-Token":pt(!1)},n)}catch(t){console.error("[VOT]",t),n(!1)}}(`${t.url}${e}`,n,((t,e)=>{b.Z.log("[exec callback] Requesting video subtitles"),t||(console.error("[VOT] Failed get yandex subtitles"),a=!0,i([]));const o=X(e);console.log("[VOT] Subtitles response: ",o);let n=o.subtitles??[];n=n.reduce(((t,e)=>(e.language&&!t.find((t=>{if("yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage)return t}))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),a=!0,i(n)}))}))]),...i].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===x.KQ||e.language===x.KQ))return t.language===x.KQ?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===n?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===n?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}));return console.log("[VOT] subtitles list",r),r}(this.site,t,this.videoData.detectedLanguage),this.subtitlesList?this.subtitlesListVideoId=t:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect())}getVideoVolume(){let t=this.video?.volume;return"youtube"===this.site.host&&(t=_()||t),t}setVideoVolume(t){"youtube"===this.site.host&&R(t)||(this.video.volume=t)}syncVideoVolumeSlider(){const t=Math.round(100*this.getVideoVolume());this.votVideoVolumeSlider.input.value=t,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${t}%`,ct.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(t))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(v.V.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(v.V.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncTranslationWithVideo(t){const e=Number(this.votVideoVolumeSlider.input.value),o=ut(this.video,t,e,this.tempVolume);this.votVideoVolumeSlider.input.value=o,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ct.updateSlider(this.votVideoVolumeSlider.input),this.tempOriginalVolume=o,this.tempVolume=t}async getVideoData(){const t={translationHelp:null,isStream:!1};if(t.duration=this.video?.duration||343,t.videoId=(0,x.gJ)(this.site.host,this.video),t.detectedLanguage=this.translateFromLang,t.responseLanguage=this.translateToLang,!t.videoId)return this.ytData={},t;if(window.location.hostname.includes("youtube.com"))this.ytData=await q(),t.isStream=this.ytData.isLive,""!==this.ytData.author&&(t.detectedLanguage=this.ytData.detectedLanguage,t.responseLanguage=this.translateToLang);else if(window.location.hostname.includes("rutube")||window.location.hostname.includes("my.mail.ru"))t.detectedLanguage="ru";else if(window.location.hostname.includes("bilibili.com"))t.detectedLanguage="zh";else if(window.location.hostname.includes("coursera.org")){const e=await wt(this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else if(window.location.hostname.includes("udemy.com")){const e=await Lt(this.data.udemyData,this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else"vk"!==this.site.host&&"piped"!==this.site.host&&"invidious"!==this.site.host&&"bitchute"!==this.site.host&&"rumble"!==this.site.host&&"peertube"!==this.site.host&&"dailymotion"!==this.site.host&&"trovo"!==this.site.host&&"yandexdisk"!==this.site.host||(t.detectedLanguage="auto");return t}videoValidator(){if("youtube"===this.site.host){if(b.Z.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage&&this.videoData.responseLanguage===this.data.dontTranslateLanguage)throw new m("VOTDisableFromYourLang");if(this.videoData.duration>14400)throw new m("VOTVideoIsTooLong")}return!0}lipSync(t=!1){if(b.Z.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!==t)"pause"===t&&(b.Z.log("lipsync mode is pause"),this.audio.pause()),"stop"===t&&(b.Z.log("lipsync mode is stop"),this.audio.pause()),"waiting"===t&&(b.Z.log("lipsync mode is waiting"),this.audio.pause()),"playing"===t&&(b.Z.log("lipsync mode is playing"),this.audio.play());else{b.Z.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",v.V.get("grantPermissionToAutoPlay")),new m("grantPermissionToAutoPlay");if("NotSupportedError"===t.name)throw this.transformBtn("error",At.includes(window.location.hostname)?v.V.get("neededAdditionalExtension"):v.V.get("audioFormatNotSupported")),At.includes(window.location.hostname)?new m("neededAdditionalExtension"):new m("audioFormatNotSupported")}))}else b.Z.log("lipsync mode is not set")}handleVideoEvent(t){b.Z.log(`video ${t.type}`),this.lipSync(t.type)}stopTraslate(){Bt.forEach((t=>this.video.removeEventListener(t,this.handleVideoEventBound))),this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",v.V.get("translateVideo")),this.volumeOnStart&&(b.Z.log(`Volume on start: ${this.volumeOnStart}`),"youtube"===this.site.host?R(this.volumeOnStart):this.video.volume=this.volumeOnStart),clearInterval(this.streamPing),this.hls?.destroy(),this.hls=(0,x.QZ)()}async translateExecutor(t){this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),b.Z.log("Run videoValidator"),this.videoValidator(),b.Z.log("Run translateFunc"),this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}translateFunc(t,e,n,i,a){console.log("[VOT] Video Data: ",this.videoData);const r=`${this.site.url}${t}`;if(this.videoValidator(),e)return b.Z.log("Executed stream translation"),void function(t,e,n,i){b.Z.log(`Translate stream (url: ${t}, requestLang: ${e}, responseLang: ${n})`),async function(t,e,n,i){try{b.Z.log("requestStreamTranslation");const a=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const r=et(t,e,n);await a("/stream-translation/translate-stream",r,{"Vtrans-Signature":await gt(r),"Sec-Vtrans-Token":pt(!1)},i)}catch(t){console.error("[VOT]",t),i(!1)}}(t,e,n,((t,e)=>{if(b.Z.log("[exec callback] Requesting stream translation"),!t)return void i(!1,v.V.get("requestTranslationFailed"));const o=ot(e);switch(console.log("[VOT] Stream Translation response: ",o),o.interval){case 10:i(!1,o.interval,v.V.get("translationTakeFewMinutes"));break;case 20:i(!0,o.interval,o||v.V.get("audioNotReceived"));break;case 0:i(!1,o.interval,v.V.get("streamNoConnectionToServer"))}}))}(r,n,i,(async(r,s,l)=>{if(b.Z.log("[exec callback] translateStream callback"),(0,x.gJ)(this.site.host,this.video)!==t)return;if(!r||!l.translatedInfo)return"VOTLocalizedError"===l?.name?this.transformBtn("error",l.localizedMessage):1===this.data.translateAPIErrors&&"ru"!==v.V.lang?(this.transformBtn("error",`${v.V.get("VOTTranslatingError")}...`),this.transformBtn("error",await L(l,"ru",v.V.lang))):this.transformBtn("error",l),void(10===s&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),1e3*s)));this.transformBtn("success",v.V.get("disableTranslate")),console.log(l);const d=l.pingId;b.Z.log(`Stream pingId: ${d}`),this.streamPing=setInterval((async()=>await async function(t,e){try{b.Z.log("requestStreamPing");const n=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const i=tt(t);await n("/stream-translation/ping-stream",i,{"Vtrans-Signature":await gt(i),"Sec-Vtrans-Token":pt(!1)},e)}catch(t){console.error("[VOT]",t),e(!1)}}(d,(t=>b.Z.log("Stream ping result: ",t)))),1e3*s),b.Z.log(l.translatedInfo.url);const c=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(l.translatedInfo.url)}`;if(b.Z.log(c),this.hls)this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){b.Z.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t,e){b.Z.log("manifest loaded, found "+e.levels.length+" quality level")})),this.hls.loadSource(c),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t,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()}})),b.Z.log(this.hls);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new m("audioFormatNotSupported");this.audio.src=c}z(this.video,10),this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),this.video.src||this.video.currentSrc||this.video.srcObject?(this.video&&!this.video.paused&&this.lipSync("play"),Bt.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ct.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=c):this.stopTranslation()}));if(["udemy","coursera"].includes(this.site.host)&&!a)throw new m("VOTTranslationHelpNull");!function(t,e,n,i,a,r){b.Z.log(`Translate video (url: ${t}, duration: ${e}, requestLang: ${n}, responseLang: ${i})`),b.Z.log("translationHelp:",a),Ft?b.Z.log("translationPanding return"):(Ft=!0,async function(t,e,n,i,a,r){try{b.Z.log("requestVideoTranslation");const s=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest-cloudflare.js"))).default;b.Z.log("Inited yandexRequest...");const l=K(t,e,n,i,a);await s("/video-translation/translate",l,{"Vtrans-Signature":await gt(l),"Sec-Vtrans-Token":pt(!1)},r)}catch(t){console.error("[VOT]",t),r(!1)}}(t,e,n,i,a,((t,e)=>{if(Ft=!1,b.Z.log("[exec callback] Requesting video translation"),!t)return void r(!1,v.V.get("requestTranslationFailed"));const o=Q(e);switch(console.log("[VOT] Translation response: ",o),o.status){case 0:r(!1,o.message);break;case 1:r(!!o.url,o.url||v.V.get("audioNotReceived"));break;case 2:r(!1,o.remainingTime?(0,x.PG)(o.remainingTime):v.V.get("translationTakeFewMinutes"));break;case 3:r(!1,v.V.get("videoBeingTranslated"))}})))}(r,this.videoData.duration,n,i,a,(async(o,r)=>{if(b.Z.log("[exec callback] translateVideo callback"),(0,x.gJ)(this.site.host,this.video)!==t)return;if(!o)return"VOTLocalizedError"===r?.name?this.transformBtn("error",r.localizedMessage):1!==this.data.translateAPIErrors||r.includes(v.V.get("translationTake"))||"ru"===v.V.lang?this.transformBtn("error",r):(this.transformBtn("error",v.V.get("VOTTranslatingError")),this.transformBtn("error",await L(r,"ru",v.V.lang))),r.includes(v.V.get("translationTake"))&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),6e4)),void console.error("[VOT]",r);if(this.audio.src=r,1===this.data.audioProxy&&r.startsWith("https://")){const t=r.replace("https://vtrans.s3-private.mds.yandex.net/tts/prod/",""),e=`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/${t}`;console.log(`[VOT] Audio proxied via ${e}`),this.audio.src=e}if(this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),"twitter"===this.site.host&&document.querySelector('div[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslationBound),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return void this.stopTranslation();const s=["twitch","vimeo","facebook","rutube","twitter","bilibili","mail_ru","rumble","eporner"];for(let t=0;t{t.forEach((t=>{"attributes"===t.type&&"src"===t.attributeName&&t.target===this.video&&""!==t.target.src&&(this.stopTranslation(),this.firstPlay=!0)}))})).observe(this.container,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0});break}this.video&&!this.video.paused&&this.lipSync("play"),Bt.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.transformBtn("success",v.V.get("disableTranslate")),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ct.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=r}))}stopTranslation(){this.stopTraslate(),this.syncVideoVolumeSlider()}async waitInitialization(){let t=!1;return await Promise.race([new Promise((async e=>{await(0,x._v)(1e3),t||console.error("[VOT] Initialization timeout"),t=!0,e(!1)})),new Promise((async e=>{for(;!this.initialized;)await(0,x._v)(100);t=!0,e(!0)}))])}async handleSrcChanged(){if(b.Z.log("[VideoHandler] src changed",this),!await this.waitInitialization())return;this.stopTranslation(),this.videoData=await this.getVideoData(),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru"}async release(){b.Z.log("[VideoHandler] release"),await this.waitInitialization()&&(this.initialized=!1,this.stopTranslation(),this.releaseExtraEvents(),this.subtitlesWidget.release(),this.srcObserver.disconnect(),clearInterval(this.srcObjectInterval),this.votButton.container.remove(),this.votMenu.container.remove())}}const Rt=new class{constructor(){this.onVideoAdded=new Ot,this.onVideoRemoved=new Ot,this.handleVideoAddedBound=this.handleVideoAdded.bind(this),this.handleVideoRemovedBound=this.handleVideoRemoved.bind(this),this.observer=new MutationObserver((t=>{window.requestIdleCallback((()=>{t.forEach((t=>{"childList"===t.type&&(Pt(t.addedNodes).forEach(this.handleVideoAddedBound),Pt(t.removedNodes).forEach(this.handleVideoRemovedBound))}))}),{timeout:1e3})}))}enable(){this.observer.observe(document,{childList:!0,subtree:!0}),document.querySelectorAll("video").forEach(this.handleVideoAddedBound)}disable(){this.observer.disconnect()}handleVideoAdded(t){this.onVideoAdded.dispatch(t)}handleVideoRemoved(t){document.contains(t)||this.onVideoRemoved.dispatch(t)}},zt=new WeakMap;(async function(){b.Z.log("Loading extension..."),await v.V.update(),b.Z.log(`Selected menu language: ${v.V.lang}`),b.Z.log("Extension compatibility passed..."),Rt.onVideoAdded.addListener((t=>{for(const e of Et.filter((t=>{const e=t=>t instanceof RegExp&&t.test(window.location.hostname)||"string"==typeof t&&window.location.hostname.includes(t)||"function"==typeof t&&t(new URL(window.location));return!!(e(t.match)||t.match instanceof Array&&t.match.some((t=>e(t))))&&t.host&&t.url}))){if(!e)continue;let o;if(e.shadowRoot)o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.shadowRoot.contains(t))):t.parentElement,o=o&&o.shadowRoot?o.parentElement:o;else{const n=Ct.browser.version.split(".")?.[0];if(e.selector?.includes(":not")&&e.selector?.includes("*")&&n&&("Chrome"===Ct.browser.name&&Number(n)<88||"Firefox"===Ct.browser.name&&Number(n)<84)){const n=e.selector?.split(" *")?.[0];o=n?Object.values(document.querySelectorAll(n)).find((e=>e.contains(t))):t.parentElement}else o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.contains(t))):t.parentElement}if(o&&!("rumble"===e.host&&o.querySelector("vot-block")||("peertube"===e.host&&(e.url=window.location.origin),zt.has(t)))){zt.set(t,new qt(t,o,e));break}}})),Rt.onVideoRemoved.addListener((async t=>{zt.has(t)&&(await zt.get(t).release(),zt.delete(t))})),Rt.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file diff --git a/dist/vot-cloudflare.user.js b/dist/vot-cloudflare.user.js index a36c2ce7..22a120cf 100644 --- a/dist/vot-cloudflare.user.js +++ b/dist/vot-cloudflare.user.js @@ -13,7 +13,7 @@ // @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser // @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры // @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译 -// @version 1.5.0.1 +// @version 1.5.0.2 // @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD // @supportURL https://github.com/ilyhalight/voice-over-translation/issues // @match *://*.youtube.com/* @@ -595,7 +595,7 @@ __webpack_require__.d(__webpack_exports__, { }); ;// CONCATENATED MODULE: ./src/localization/locales/en.json -const en_namespaceObject = JSON.parse('{"__version__":2,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTFailedInitDB":"Failed to initialize database","VOTDBNeedUpdate":"The database needs an update, please reload the page","VOTDisabledForDBUpdating":"VOT is disabled due to an error when updating the Database. Close all open tabs with {0} and try again","VOTFailedWriteToDB":"Data could not be written to the database","VOTFailedReadFromDB":"Data could not be retrieved from the database","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","VOTCloudflareDoesntSupportStreams":"The Cloudflare version of the script does not support stream translation","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}'); +const en_namespaceObject = JSON.parse('{"__version__":3,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}'); // EXTERNAL MODULE: ./src/utils/debug.js var debug = __webpack_require__("./src/utils/debug.js"); // EXTERNAL MODULE: ./src/utils/storage.js @@ -1728,17 +1728,24 @@ async function getLanguage(player, response, title, description) { } // If there is no caption track, use detect to get the language code from the description + + const deletefilter = [ + /https?:\/\/\S+/g, // remove links + /Auto-generated by YouTube/g, + /Provided to YouTube by/g, + /Released on/g, + ]; + const cleanedDescription = description .split("\n") - .filter((line) => !line.match(/https?:\/\/\S+/)) + .filter((line) => !deletefilter.some((regex) => regex.test(line))) .join("\n") - .replace(/#\S+/g, "") - .replace(/[^\p{L}\s]/gu, "") - .replace(/\s+/g, " ") + .replace(/[^\p{L}\s]/gu, " ") .trim() + .replace(/\s+/g, " ") .slice(0, 250); - const cleanText = [cleanedDescription, title].join(""); + const cleanText = [cleanedDescription, title].join(" "); return await detect(cleanText); } diff --git a/dist/vot-min.user.js b/dist/vot-min.user.js index 644e7990..417dc740 100644 --- a/dist/vot-min.user.js +++ b/dist/vot-min.user.js @@ -13,7 +13,7 @@ // @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser // @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры // @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译 -// @version 1.5.0.1 +// @version 1.5.0.2 // @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD // @supportURL https://github.com/ilyhalight/voice-over-translation/issues // @match *://*.youtube.com/* @@ -120,4 +120,4 @@ // ==/UserScript== /*! For license information please see vot-min.js.LICENSE.txt */ -(()=>{var t={"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[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}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var c=s.default.find(r,(function(t){return e.isPlatform(t)}));if(c){var u=this.satisfies(o[c]);if(void 0!==u)return u}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{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(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{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(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{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(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss":(t,e,o)=>{"use strict";o.d(e,{Z:()=>s});var n=o("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),i=o.n(n),a=o("./node_modules/css-loader/dist/runtime/api.js"),r=o.n(a)()(i());r.push([t.id,'.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) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer;transition:box-shadow .2s}.vot-button[hidden]{display:none !important}.vot-button::-moz-focus-inner{border:none}.vot-button::before,.vot-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-button::before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.vot-button:hover::before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.vot-button:active::after{opacity:.32;background-size:100% 100%;transition:background-size 0s}.vot-button:disabled{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.12);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);box-shadow:none;cursor:initial}.vot-button:disabled::before,.vot-button:disabled::after{opacity:0}.vot-outlined-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:solid 1px;border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.24);border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:34px;outline:none;cursor:pointer}.vot-outlined-button[hidden]{display:none !important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button::before,.vot-outlined-button::after{content:"";position:absolute;border-radius:3px;top:0;right:0;bottom:0;left:0;opacity:0}.vot-outlined-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-outlined-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-outlined-button:disabled::before,.vot-outlined-button:disabled::after{opacity:0}.vot-text-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:4px;padding:0 8px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-text-button[hidden]{display:none !important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button::before,.vot-text-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-text-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-text-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-text-button:disabled::before,.vot-text-button:disabled::after{opacity:0}.vot-icon-button{--vot-helper-onsurface: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:50%;padding:0;width:36px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-icon-button[hidden]{display:none !important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button::before,.vot-icon-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-icon-button::before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s,opacity 0s}.vot-icon-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);fill:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-icon-button:disabled::before,.vot-icon-button:disabled::after{opacity:0}.vot-textfield{--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), 0.38 ) !important;--vot-helper-safari2: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari3: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;position:relative !important;display:inline-block;padding-top:6px !important;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-textfield[hidden]{display:none !important}.vot-textfield>input,.vot-textfield>textarea{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:0 !important;border-style:solid !important;border-width:1px !important;border-color:rgba(0,0,0,0) var(--vot-helper-safari2) var(--vot-helper-safari2) !important;border-radius:4px !important;padding:15px 13px 15px !important;width:100% !important;height:inherit !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;-webkit-text-fill-color:currentColor !important;background-color:rgba(0,0,0,0) !important;box-shadow:inset 1px 0 rgba(0,0,0,0),inset -1px 0 rgba(0,0,0,0),inset 0 -1px rgba(0,0,0,0) !important;font-family:inherit !important;font-size:inherit !important;line-height:inherit !important;caret-color:var(--vot-helper-theme) !important;transition:border .2s,box-shadow .2s !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{position:absolute !important;top:0 !important;left:0 !important;display:flex !important;width:100% !important;max-height:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;font-size:75% !important;line-height:15px !important;cursor:text !important;transition:color .2s,font-size .2s,line-height .2s !important;pointer-events:none !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;display:block !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin-top:6px !important;border-top:solid 1px var(--vot-helper-safari2) !important;min-width:10px !important;height:8px !important;pointer-events:none !important;box-shadow:inset 0 1px rgba(0,0,0,0) !important;transition:border .2s,box-shadow .2s !important}.vot-textfield>input+span::before,.vot-textfield>textarea+span::before{margin-right:4px !important;border-left:solid 1px rgba(0,0,0,0) !important;border-radius:4px 0 !important}.vot-textfield>input+span::after,.vot-textfield>textarea+span::after{flex-grow:1 !important;margin-left:4px !important;border-right:solid 1px rgba(0,0,0,0) !important;border-radius:0 4px !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:rgba(0,0,0,0) !important}.vot-textfield:hover>input,.vot-textfield:hover>textarea{border-color:rgba(0,0,0,0) var(--vot-helper-safari3) var(--vot-helper-safari3) !important}.vot-textfield:hover>input+span::before,.vot-textfield:hover>input+span::after,.vot-textfield:hover>textarea+span::before,.vot-textfield:hover>textarea+span::after{border-top-color:var(--vot-helper-safari3) !important}.vot-textfield:hover>input:not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3) !important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:rgba(0,0,0,0) 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:rgba(0,0,0,0) var(--vot-helper-safari1) var(--vot-helper-safari1) !important;color:rgba(var(--vot-onsurface-rgb, 0, 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{border-top-color:var(--vot-helper-safari1) !important}.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:rgba(0,0,0,0) !important}@media not all and (min-resolution: 0.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;position:relative;display:inline-block;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-checkbox[hidden]{display:none !important}.vot-checkbox>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:1;position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:3px 1px;border:solid 2px;background:rgba(0,0,0,0);border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6);border-radius:2px;width:18px;height:18px;outline:none;cursor:pointer;transition:border-color .2s,background-color .2s}.vot-checkbox>input+span{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-left:30px;width:inherit;cursor:pointer}.vot-checkbox>input+span::before{content:"";position:absolute;left:-10px;top:-8px;display:block;border-radius:50%;width:40px;height:40px;background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0));opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s,transform .2s}.vot-checkbox>input+span::after{content:"";z-index:1;display:block;position:absolute;top:3px;left:1px;-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important;width:10px;height:5px;border:solid 2px rgba(0,0,0,0);border-right-width:0;border-top-width:0;pointer-events:none;transform:translate(3px, 4px) rotate(-45deg);transition:border-color .2s}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.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))}.vot-checkbox>input:indeterminate+span::after{border-left-width:0;transform:translate(4px, 3px)}.vot-checkbox:hover>input+span::before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6)}.vot-checkbox:active>input+span::before{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38)}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled+span::before{opacity:0;transform:scale(0)}.vot-slider{--vot-safari-helper1: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.04 ) !important;--vot-safari-helper2: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.12 ) !important;--vot-safari-helper3: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.16 ) !important;--vot-safari-helper4: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.24 ) !important;display:inline-block;width:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;font-family:var(--vot-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-slider[hidden]{display:none !important}.vot-slider>input{-webkit-appearance:none !important;appearance:none !important;position:relative !important;top:24px !important;display:block !important;margin:0 0 -36px !important;width:100% !important;height:36px !important;background-color:rgba(0,0,0,0) !important;cursor:pointer !important}.vot-slider>input:last-child{position:static !important;margin:0 !important}.vot-slider>span{display:inline-block !important;margin-bottom:36px !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), 0.38) !important}.vot-slider>input::-webkit-slider-runnable-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-webkit-slider-thumb{margin:0 !important;appearance:none !important;-webkit-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1) !important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4) !important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0)) !important;color:rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;transform:scale(4, 4) !important}.vot-slider>input::-moz-range-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-moz-range-thumb{appearance:none !important;-moz-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider>input::-moz-range-progress{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !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, 4) !important}.vot-slider>input::-moz-focus-outer{border:none !important}.vot-slider>input::-ms-track{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:17px 0 !important;border:none !important;border-radius:1px !important;padding:0 17px !important;width:100% !important;height:2px !important;background-color:rgba(0,0,0,0) !important}.vot-slider>input::-ms-fill-lower{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider>input::-ms-fill-upper{border-radius:1px !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-ms-thumb{appearance:none !important;margin:0 17px !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important;opacity:.38 !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, 4) !important}.vot-slider>input::before{content:"" !important;display:block !important;position:absolute !important;width:calc(100%*var(--vot-progress, 0)) !important;height:2px !important;top:calc(50% - 1px) !important;background:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0) !important;--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87) !important;--vot-helper-safari1: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari2: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;display:flex;align-items:center;justify-content:space-between;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;line-height:1.5;text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-select[hidden]{display:none !important}.vot-select-label{font-size:16px}.vot-select-outer{display:flex;align-items:center;justify-content:space-between;max-width:120px;width:120px;padding:0 5px;border-style:solid !important;border-width:1px !important;border-color:var(--vot-helper-safari1) !important;border-radius:4px !important;cursor:pointer;transition:border .2s !important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2) !important}.vot-select-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vot-select-arrow-icon{width:20px;height:32px;display:flex;justify-content:center;align-items:center}.vot-select-content-list{display:flex;flex-direction:column}.vot-select-content-list .vot-select-content-item{padding:5px 10px;border-radius:8px;cursor:pointer}.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), 0.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.1) !important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none !important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-weight:bold;line-height:1.5;text-align:start}.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{display:flex;color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-info[hidden]{display:none !important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb), 0.5);flex:1;margin-left:8px}.vot-lang-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);display:flex;align-items:center;justify-content:space-between;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-lang-select[hidden]{display:none !important}.vot-lang-select-icon{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.vot-segmented-button{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);overflow:hidden;position:absolute;left:50%;top:5rem;transform:translate(-50%);user-select:none;display:flex;align-items:center;height:32px;max-width:100vw;background:rgb(var(--vot-surface-rgb, 255, 255, 255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);border-radius:4px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;cursor:default;transition:opacity .5s;z-index:100}.vot-segmented-button[hidden]{display:none !important}.vot-segmented-button *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-segmented-button .vot-separator{width:1px;height:50%;background:rgba(var(--vot-helper-theme-rgb), 0.1)}.vot-segmented-button .vot-separator[hidden]{display:none !important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;height:100%;padding:0 8px;background-color:rgba(0,0,0,0);color:inherit;transition:background-color 100ms ease-in-out;border:none}.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:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.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 at center, currentColor 1%, transparent 1%) center/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 0s}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{margin-left:8px;white-space:nowrap}.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 svg{width:fit-content}.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), 0.87);overflow:hidden;position:absolute;left:50%;top:calc(5rem + 32px + 16px);user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);border-radius:8px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;min-width:300px;cursor:default;z-index:100;visibility:visible;opacity:1;transform-origin:top;transform:translate(-50%) scale(1);transition:opacity .3s,transform .1s}.vot-menu *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-menu[hidden]{pointer-events:none;display:block !important;pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%) scale(0)}.vot-menu-content-wrapper{display:flex;flex-direction:column;min-height:100px;max-height:calc(var(--vot-container-height, 75vh) - (5rem + 32px + 16px)*2);overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-menu-header-container:empty{padding:0 0 16px 0}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0;text-align:start}.vot-menu-title{flex:1;font-size:16px;line-height:1;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 16px;gap:8px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar,.vot-menu-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-footer-container:empty{padding:16px 0 0 0}.vot-dialog-container{visibility:visible;position:absolute;z-index:10000}.vot-dialog-container[hidden]{display:block !important;pointer-events:none;visibility:hidden}.vot-dialog-container *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-dialog-backdrop{background-color:rgba(0,0,0,.6);position:fixed;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .3s}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.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), 0.87);display:block;position:fixed;top:50%;bottom:50%;max-width:initial;max-height:initial;width:min(var(--vot-dialog-width, 512px),100%);height:fit-content;inset-inline-start:0px;inset-inline-end:0px;inset-block-start:0px;inset-block-end:0px;border-radius:8px;margin:auto;padding:0;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);box-shadow:0 0 16px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.24);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;user-select:none;visibility:visible;overflow:auto;overflow-y:hidden;opacity:1;transform-origin:center;transform:scale(1);transition:opacity .3s,transform .1s}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transform:scale(0.5);transition:opacity .1s,transform .2s}.vot-dialog-content-wrapper{display:flex;flex-direction:column;max-height:75vh;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-dialog-header-container:empty{padding:0 0 20px 0}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0}.vot-dialog-title{flex:1;font-size:115.3846153846%;font-weight:bold;line-height:1;padding-bottom:16px;padding-inline-end:20px;padding-inline-start:20px;padding-top:20px}.vot-dialog-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 20px;gap:16px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar,.vot-dialog-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-dialog-footer-container:empty{padding:20px 0 0 0}.vot-subtitles-widget{display:flex;justify-content:center;align-items:center;position:absolute;width:50%;max-height:100%;min-height:20%;z-index:100;left:25%;top:75%;pointer-events:none}.vot-subtitles{position:relative;max-width:100%;max-height:100%;width:max-content;background:var(--vot-subtitles-background, rgba(46, 47, 52, 0.8));color:var(--vot-subtitles-color, rgb(227, 227, 227));border-radius:1rem;pointer-events:all;padding:1rem;font-size:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color, rgb(33, 150, 243))}:root{--vot-font-family: "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system;--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-background: rgba(var(--vot-surface-rgb, 46, 47, 52), 0.8);--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{display:block}',""]);const s=r},"./node_modules/css-loader/dist/runtime/api.js":t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o="",n=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),n&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=t(e),n&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(t,o,n,i,a){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(n)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),o&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=o):c[2]=o),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},"./node_modules/css-loader/dist/runtime/noSourceMaps.js":t=>{"use strict";t.exports=function(t){return t[1]}},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":t=>{"use strict";var e=[];function o(t){for(var o=-1,n=0;n{"use strict";var e={};t.exports=function(t,o){var n=function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}e[t]=o}return e[t]}(t);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(t,e,o)=>{"use strict";t.exports=function(t){var e=o.nc;e&&t.setAttribute("nonce",e)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(o){!function(t,e,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(n,t,e.options)}(e,t,o)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},"./src/config/config.js":(t,e,o)=>{"use strict";o.d(e,{EY:()=>u,I1:()=>s,Rr:()=>l,e6:()=>a,ez:()=>r,iF:()=>i,jm:()=>h,kF:()=>c,rm:()=>p,sN:()=>d});var n=o("./src/utils/utils.js");const i="api.browser.yandex.ru",a="m3u8proxy.toil-dump.workers.dev",r="uk"===n.KQ?"vot-new.toil-dump.workers.dev":"vot.deno.dev",s="xtGCyGdTY2Jy6OMEKdTuXev3Twhkamgm",l="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36",d=.15,c="yandex",u="yandex",h={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},p={yandex:"https://translate.toil.cc/translate"}},"./src/localization/localizationProvider.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>r,V:()=>s});const n=JSON.parse('{"__version__":2,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTFailedInitDB":"Failed to initialize database","VOTDBNeedUpdate":"The database needs an update, please reload the page","VOTDisabledForDBUpdating":"VOT is disabled due to an error when updating the Database. Close all open tabs with {0} and try again","VOTFailedWriteToDB":"Data could not be written to the database","VOTFailedReadFromDB":"Data could not be retrieved from the database","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","VOTCloudflareDoesntSupportStreams":"The Cloudflare version of the script does not support stream translation","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}');var i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=["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"],s=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=a.i.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(a.i.syncGet("locale-phrases",""))}reset(){this.gmValues.forEach((t=>a.i.syncDelete(t)))}async update(t=!1){(t||2!==await a.i.get("locale-version",0,!0)||await a.i.get("locale-lang")!==this.lang)&&(i.Z.log("Updating locale..."),await fetch(`https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/src/localization/locales/${this.lang}.json`).then((t=>{if(200===t.status)return t.text();throw t.status})).then((async t=>{await a.i.set("locale-phrases",t),this.setLocaleFromJsonString(t);const e=this.getFromLocale(this.locale,"__version__");"number"==typeof e&&await a.i.set("locale-version",e),await a.i.set("locale-lang",this.lang)})).catch((async t=>{console.error("[VOT] [localizationProvider] failed get locale, cause:",t),this.setLocaleFromJsonString(await a.i.get("locale-phrases",""))})))}setLocaleFromJsonString(t){try{this.locale=JSON.parse(t)??{}}catch(t){console.error("[VOT] [localizationProvider]",t),this.locale={}}}getFromLocale(t,e){const o=e.split(".").reduce(((t,e)=>{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(n,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(n,t)??t}}},"./src/utils/debug.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>n});const n={log:(...t)=>{}}},"./src/utils/storage.js":(t,e,o)=>{"use strict";o.d(e,{i:()=>i});var n=o("./src/utils/debug.js");const i=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,n.Z.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);let n=window.localStorage.getItem(t);if("udemyData"===t&&"string"==typeof n)try{n=JSON.parse(n)}catch{n=e}return o?Number(n)??Number(e):n??e}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):new Promise((n=>{n(this.syncGet(t,e,o))}))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):("udemyData"===t&&(e=JSON.stringify(e)),window.localStorage.setItem(t,e))}async set(t,e){return this.gmSupport?await GM_setValue(t,e):new Promise((o=>{o(this.syncSet(t,e))}))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):new Promise((e=>{e(this.syncDelete(t))}))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","udemyData","audioProxy","showPiPButton","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():new Promise((t=>{t(this.syncList())}))}}},"./src/utils/utils.js":(t,e,o)=>{"use strict";o.d(e,{KQ:()=>a,PG:()=>l,QZ:()=>u,_v:()=>r,eL:()=>d,gJ:()=>s,qq:()=>c});var n=o("./src/localization/localizationProvider.js");const i=navigator.language||navigator.userLanguage,a=i?.substr(0,2)?.toLowerCase()??"en";String.prototype.format||(String.prototype.format=function(){var t=arguments;return this.replace(/{(\d+)}/g,(function(e,o){return void 0!==t[o]?t[o]:e}))});const r=t=>new Promise((e=>setTimeout(e,t))),s=(t,e)=>{const o=new URL(window.location.href);switch(t){case"piped":case"invidious":case"youtube":return o.pathname.match(/(?:watch|embed|shorts)\/([^/]+)/)?.[1]||o.searchParams.get("v");case"vk":return o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)?o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)[0].slice(1):o.searchParams.get("z")?o.searchParams.get("z").split("/")[0]:!(!o.searchParams.get("oid")||!o.searchParams.get("id"))&&`video-${Math.abs(o.searchParams.get("oid"))}_${o.searchParams.get("id")}`;case"nine_gag":case"9gag":case"gag":return o.pathname.match(/gag\/([^/]+)/)?.[1];case"twitch":if(/^m\.twitch\.tv$/.test(window.location.hostname)){const t=document.head.querySelector('link[rel="canonical"]');return t?.href.match(/videos\/([^/]+)/)?.[0]||o.pathname.slice(1)}if(/^player\.twitch\.tv$/.test(window.location.hostname))return`videos/${o.searchParams.get("video")}`;if(/^clips\.twitch\.tv$/.test(window.location.hostname)){const t=document.querySelector(".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']");return!!t&&`${t.href.replace("https://www.twitch.tv/","")}/clip/${o.searchParams.get("clip")}`}return o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)?o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)[0]:o.pathname.match(/(?:videos)\/([^/]+)/)?.[0];case"proxytok":return o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];case"tiktok":{let t=o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];if(!t){const o=e.closest(".xgplayer-playing, .tiktok-web-player"),n=o?.closest('div[data-e2e="recommend-list-item-container"]'),i=n?.querySelector('a[data-e2e="video-author-avatar"]');if(o&&i){const e=o.id?.match(/^xgwrapper-[0-9]+-(.*)$/)?.at(1),n=i.href?.match(/.*(@.*)$/)?.at(1);e&&n&&(t=`${n}/video/${e}`)}}return t}case"vimeo":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0]||o.pathname.match(/[^/]+$/)?.[0];case"xvideos":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0];case"pornhub":return o.searchParams.get("viewkey")||o.pathname.match(/embed\/([^/]+)/)?.[1];case"twitter":return o.pathname.match(/status\/([^/]+)/)?.[1];case"udemy":case"rumble":return o.pathname;case"facebook":return!!o.searchParams.get("v")&&o.searchParams.get("v");case"rutube":return o.pathname.match(/(?:video|embed)\/([^/]+)/)?.[1];case"coub":return o.pathname.includes("/view")?o.pathname.match(/view\/([^/]+)/)?.[1]:o.pathname.includes("/embed")?o.pathname.match(/embed\/([^/]+)/)?.[1]:document.querySelector(".coub.active")?.dataset?.permalink;case"bilibili":{const t=o.searchParams.get("bvid");if(t)return t;{let t=o.pathname.match(/video\/([^/]+)/)?.[1];return t&&o.search&&null!==o.searchParams.get("p")&&(t+=`/?p=${o.searchParams.get("p")}`),t}}case"mail_ru":if(o.pathname.startsWith("/v/")||o.pathname.startsWith("/mail/"))return o.pathname;if(o.pathname.match(/video\/embed\/([^/]+)/)){const t=document.querySelector(".b-video-controls__mymail-link");return!!t&&t?.href.split("my.mail.ru")?.[1]}return!1;case"bitchute":return o.pathname.match(/video\/([^/]+)/)?.[1];case"coursera":return o.pathname.match(/learn\/([^/]+)\/lecture\/([^/]+)/)?.[0];case"eporner":return o.pathname.match(/video-([^/]+)\/([^/]+)/)?.[0];case"peertube":return o.pathname.match(/\/w\/([^/]+)/)?.[0];case"dailymotion":{const t=Array.from(document.scripts).filter((t=>t.innerText.trim().includes("window.__PLAYER_CONFIG__ = {")));if(!t.length)return!1;try{let e=t[0].innerText.trim().replace("window.__PLAYER_CONFIG__ = ","");e.endsWith("};")&&(e=e.substring(0,e.length-1));const o=JSON.parse(e),n=o.context.embedder??o.context.http_referer;return console.log(n,o),n.match(/\/video\/([^/]+)/)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case"trovo":{if(!o.pathname.startsWith("/s/"))return!1;const t=o.searchParams.get("vid");if(!t)return!1;const e=o.pathname.match(/([^/]+)\/([\d]+)/)?.[0];return!!e&&`${e}?vid=${t}`}case"yandexdisk":return o.pathname.match(/\/[i|s|d]\/([^/]+)/)?.[1];default:return!1}};function l(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?n.V.get("translationTakeMoreThanHour"):e>=10&&e%10?n.V.get("translationTakeApproximatelyMinutes").format(e):1==e||0==e&&o>0?n.V.get("translationTakeAboutMinute"):n.V.get("translationTakeApproximatelyMinute").format(e)}function d(t){return t.toLowerCase().split(";")[0].trim().split("-")[0].split("_")[0]}function c(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function u(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}},"./src/yandexRequest.js":(t,e,o)=>{"use strict";o.r(e),o.d(e,{default:()=>a});var n=o("./src/config/config.js"),i=o("./src/utils/debug.js");const a=async function(t,e,o,a){try{i.Z.log("yandexRequest:",t);const r={url:`https://${n.iF}${t}`,method:"POST",headers:{Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf","User-Agent":n.Rr,Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors","sec-ch-ua":null,"sec-ch-ua-mobile":null,"sec-ch-ua-platform":null,...o},binary:!0,data:new Blob([e]),responseType:"arraybuffer"};GM_xmlhttpRequest({...r,onload:t=>{i.Z.log("yandexRequest:",t.status,t),a(200===t.status,t.response)},onerror:t=>{console.error("[VOT]",t),a(!1)}})}catch(t){console.error("[VOT]",t),a(!1)}}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={id:n,exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nc=void 0,(()=>{"use strict";var t=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),e=o.n(t),n=o("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),i=o.n(n),a=o("./node_modules/style-loader/dist/runtime/insertBySelector.js"),r=o.n(a),s=o("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),l=o.n(s),d=o("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),c=o.n(d),u=o("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),h=o.n(u),p=o("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss"),g={};g.styleTagTransform=h(),g.setAttributes=l(),g.insert=r().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=c(),e()(p.Z,g),p.Z&&p.Z.locals&&p.Z.locals;var v=o("./src/localization/localizationProvider.js");class m extends Error{constructor(t){super(v.V.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=v.V.get(t)}}var b=o("./src/utils/debug.js");const f=["ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],y=["kk","bn","pt","cs","hi","mr","te","tr","ms","vi","ta","jv","ur","fa","gu","id","uk","da","fi","uz","pl","sv","az","sq","am","hy","af","eu","my","bg","bs","cy","hu","gl","el","zu","kn","ca","km","lo","mk","ml","mt","mn","ne","nl","pa","ro","sr","si","sk","sl","sw","su","hr","et"],w=["ru","en","kk"],x=["Violentmonkey","FireMonkey","Greasemonkey","AdGuard","OrangeMonkey"];var S=o("./src/utils/utils.js"),k=o("./src/config/config.js"),T=o("./src/utils/storage.js");async function V(t,e){const o=new AbortController,n=setTimeout((()=>o.abort()),3e3);try{return await fetch(t,{...e,signal:o.signal})}catch(t){return console.error("Fetch timed-out. Error:",t),t}finally{clearTimeout(n)}}const M={async translate(t,e){try{const o=await V(k.rm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t,e){try{const o=await V(k.jm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.lang??"en"}catch(t){return console.error("Error translating text:",t),"en"}}},L={async detect(t){try{const e=await fetch(k.jm.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}};async function O(t,e="",o="ru"){if("yandex"===await T.i.get("translationService",k.kF)){const n=e&&o?`${e}-${o}`:o;return await M.translate(t,n)}return t}const P=["yandex"],E=["yandex","rust-server"];function C(){return/^m\.youtube\.com$/.test(window.location.hostname)}function A(){return window.location.pathname.startsWith("/shorts/")?C()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function B(){const t=A();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function F(){const t=A();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const _=function(){const t=A();return t?.getVolume?t.getVolume.call()/100:1},q=function(){const t=B();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?(0,S.eL)(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),b.Z.log("youtube subtitles:",e),e},R=async function(){const t=A(),e=B(),o=F(),{author:n,title:i}=o??{},{shortDescription:a,isLive:r,isLiveContent:s,isUpcoming:l}=e?.videoDetails??{},d=!(!r&&!l||s);let c=await async function(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return(0,S.eL)(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return(0,S.eL)(t.languageCode)}if(!n||!o)return"en";const a=[n.split("\n").filter((t=>!t.match(/https?:\/\/\S+/))).join("\n").replace(/#\S+/g,"").replace(/[^\p{L}\s]/gu,"").replace(/\s+/g," ").trim().slice(0,250),o].join("");return await async function(t){switch(await T.i.get("detectService",k.EY)){case"yandex":return await M.detect(t);case"rust-server":return await L.detect(t);default:return"en"}}(a)}(t,e,i,a);f.includes(c)||(c="en");const u={isLive:!!r,isPremiere:d,title:i,description:a,author:n,detectedLanguage:c};return b.Z.log("youtube video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},z=function(t){const e=A();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},D=function(t,e){b.Z.log("videoSeek",e);const o=(A()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},I=new protobuf.Type("VideoTranslationHelpObject").add(new protobuf.Field("target",1,"string")).add(new protobuf.Field("targetUrl",2,"string")),j=new protobuf.Type("VideoTranslationRequest").add(new protobuf.Field("url",3,"string")).add(new protobuf.Field("deviceId",4,"string")).add(new protobuf.Field("firstRequest",5,"bool")).add(new protobuf.Field("duration",6,"double")).add(new protobuf.Field("unknown2",7,"int32")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("unknown3",9,"int32")).add(new protobuf.Field("unknown4",10,"int32")).add(new protobuf.Field("translationHelp",11,"VideoTranslationHelpObject","repeated")).add(new protobuf.Field("responseLanguage",14,"string")).add(new protobuf.Field("unknown5",15,"int32")),N=new protobuf.Type("VideoSubtitlesRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")),H=new protobuf.Type("VideoStreamRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")).add(new protobuf.Field("responseLanguage",3,"string")),$=new protobuf.Type("VideoStreamPingRequest").add(new protobuf.Field("pingId",1,"int32")),Z=new protobuf.Type("VideoTranslationResponse").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("duration",2,"double")).add(new protobuf.Field("status",4,"int32")).add(new protobuf.Field("remainingTime",5,"int32")).add(new protobuf.Field("unknown0",6,"int32")).add(new protobuf.Field("unknown1",7,"string")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("message",9,"string")),U=new protobuf.Type("VideoSubtitlesObject").add(new protobuf.Field("language",1,"string")).add(new protobuf.Field("url",2,"string")).add(new protobuf.Field("unknown2",3,"int32")).add(new protobuf.Field("translatedLanguage",4,"string")).add(new protobuf.Field("translatedUrl",5,"string")).add(new protobuf.Field("unknown5",6,"int32")).add(new protobuf.Field("unknown6",7,"int32")),W=new protobuf.Type("VideoSubtitlesResponse").add(new protobuf.Field("unknown0",1,"int32")).add(new protobuf.Field("subtitles",2,"VideoSubtitlesObject","repeated")),G=new protobuf.Type("VideoStreamObject").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("timestamp",2,"int64")),Y=new protobuf.Type("VideoStreamResponse").add(new protobuf.Field("interval",1,"int32")).add(new protobuf.Field("translatedInfo",2,"VideoStreamObject")).add(new protobuf.Field("pingId",3,"int32")),K=(new protobuf.Root).define("yandex").add(I).add(j).add(Z).add(N).add(U).add(W).add($).add(H).add(G).add(Y),Q=(t,e,o,n,i)=>K.VideoTranslationRequest.encode({url:t,firstRequest:!0,duration:e,unknown2:1,language:o,unknown3:0,unknown4:0,translationHelp:i,responseLanguage:n,unknown5:0}).finish(),J=t=>K.VideoTranslationResponse.decode(new Uint8Array(t)),X=(t,e)=>K.VideoSubtitlesRequest.encode({url:t,language:e}).finish(),tt=t=>K.VideoSubtitlesResponse.decode(new Uint8Array(t)),et=t=>K.VideoStreamPingRequest.encode({pingId:t}).finish(),ot=(t,e,o)=>K.VideoStreamRequest.encode({url:t,language:e,responseLanguage:o}).finish(),nt=t=>K.VideoStreamResponse.decode(new Uint8Array(t)),it=["invidious.snopyta.org","yewtu.be","invidious.kavin.rocks","vid.puffyan.us","invidious.namazso.eu","inv.riverside.rocks","yt.artemislena.eu","invidious.flokinet.to","invidious.esmailelbob.xyz","y.com.sb","invidious.nerdvpn.de","inv.vern.cc","invidious.slipfox.xyz","invidio.xamh.de","invidious.dhusch.de"],at=["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"];function rt(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),e.innerHTML=t,e}function st(t){const e=parseFloat(t.value),o=""===t.min?0:parseFloat(t.min),n=(e-o)/((""===t.max?100:parseFloat(t.max))-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function lt(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),{container:i,input:a,label:r}}function dt(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=rt('');d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const c=document.createElement("vot-block");return c.classList.add("vot-dialog-title"),c.innerHTML=t,e.appendChild(o),e.appendChild(n),n.appendChild(i),i.appendChild(a),i.appendChild(r),i.appendChild(s),a.appendChild(l),a.appendChild(d),l.appendChild(c),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:c}}function ct(t,e,o,n={}){const i=n.onSelectCb||function(){},a=n.labelElement||"";let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.appendChild(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.innerText=t,void 0===t&&(d.innerText=o.find((t=>!0===t.selected))?.label);const c=document.createElement("vot-block");return c.classList.add("vot-select-arrow-icon"),c.innerHTML='',l.append(d,c),l.onclick=()=>{const t=dt(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.innerText=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{a.target.inert||(n.childNodes.forEach((t=>t.dataset.votSelected=!1)),o.forEach((e=>e.selected=e.value===t.value)),e.dataset.votSelected=!0,d.innerText=t.label,await i(a))},n.appendChild(e)}const a=lt(v.V.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();Array.from(r).forEach((t=>t.hidden=!t.innerText.toLowerCase().includes(e)))},t.bodyContainer.append(a.container,n),r=n.childNodes,t.backdrop.onclick=t.closeButton.onclick=()=>{t.container.remove(),r=[]}},s.append(l),{container:s,title:d,arrowIcon:c,labelElement:a,setTitle:t=>{d.innerText=t},setSelected:t=>{Array.from(r).filter((t=>!t.inert)).forEach((e=>e.dataset.votSelected=e.dataset.votValue===t)),o.forEach((e=>e.selected=String(e.value)===t))},updateItems:t=>{o=t}}}const ut={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.innerHTML=t,o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.innerHTML=t;const i=document.createElement("vot-block");return i.innerHTML=e,o.appendChild(n),o.appendChild(i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.innerHTML=t,e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.innerHTML=t,e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.innerHTML=t,e},createIconButton:rt,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.innerHTML=t,o.appendChild(n),o.appendChild(i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),a.addEventListener("input",(t=>st(t.target))),st(a),{container:i,input:a,label:r}},createTextfield:lt,createDialog:dt,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),o.innerHTML='';const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),i.innerHTML='';const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),r.innerHTML='';const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.innerHTML=t,e.appendChild(o),e.appendChild(n),e.appendChild(i),e.appendChild(a),e.appendChild(r),o.appendChild(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.innerHTML=t,e.appendChild(o),o.appendChild(n),o.appendChild(i),o.appendChild(a),n.appendChild(r),r.appendChild(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.innerText=t,e},createVOTSelect:ct,createVOTLanguageSelect:function(t){const e=t.fromTitle||"#UNDEFINED",o=t.fromDialogTitle||"#UNDEFINED",n=t.fromItems||[],i=t.fromOnSelectCB||function(){},a=t.toTitle||"#UNDEFINED",r=t.toDialogTitle||"#UNDEFINED",s=t.toItems||[],l=t.toOnSelectCB||function(){},d=document.createElement("vot-block");d.classList.add("vot-lang-select");const c=ct(e,o,n,{onSelectCb:i}),u=document.createElement("vot-block");u.classList.add("vot-lang-select-icon"),u.innerHTML='';const h=ct(a,r,s,{onSelectCb:l});return d.append(c.container,u,h.container),{container:d,fromSelect:c,icon:u,toSelect:h}},updateSlider:st};function ht(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}var pt=o("./node_modules/bowser/es5.js");function gt(t){const e=([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)));return t?e:e.toUpperCase()}async function vt(t){const e=new TextEncoder("utf-8"),o=await window.crypto.subtle.importKey("raw",e.encode(k.I1),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),n=await window.crypto.subtle.sign("HMAC",o,t);return Array.from(new Uint8Array(n),(t=>t.toString(16).padStart(2,"0"))).join("")}function mt(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1],r=o[o.length-1],s=r?.alignRange?.end??0,l=s+n.text.length;if(o.push(Object.assign(Object.assign({},n),{alignRange:{start:s,end:l}})),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function bt(t,e){const o=t.text.split(new RegExp("([\n \t])")).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a,l=r?i-s:n;return Object.assign(Object.assign({},e),{startMs:s,durationMs:l})}))}class ft{dragging=!1;subtitlesContainerRect=null;containerRect=null;offsetX=null;offsetY=null;lastContent=null;highlightWords=!1;subtitles=null;maxLength=300;maxLengthRegexp=/.{1,300}(?:\s|$)/g;constructor(t,e,o){this.site=o,this.video=t,"youtube"===this.site.host&&"mobile"!==this.site.additionalData?this.container=e.parentElement:this.container=e,this.votSubtitlesContainer=document.createElement("vot-block"),this.votSubtitlesContainer.classList.add("vot-subtitles-widget"),this.container.appendChild(this.votSubtitlesContainer),this.onMouseDownBound=this.onMouseDown.bind(this),this.onMouseUpBound=this.onMouseUp.bind(this),this.onMouseMoveBound=this.onMouseMove.bind(this),this.onTimeUpdateBound=this.onTimeUpdate.bind(this),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound)}release(){this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.votSubtitlesContainer.remove()}onMouseDown(t){this.votSubtitlesContainer.contains(t.target)&&(this.subtitlesContainerRect=this.votSubtitlesContainer.getBoundingClientRect(),this.containerRect=this.container.getBoundingClientRect(),this.offsetX=t.clientX-this.subtitlesContainerRect.x,this.offsetY=t.clientY-this.subtitlesContainerRect.y,this.dragging=!0)}onMouseUp(){this.dragging=!1}onMouseMove(t){if(this.dragging){t.preventDefault();const e=t.clientX-this.offsetX,o=t.clientY-this.offsetY,n=o>=this.containerRect.top,i=o+this.subtitlesContainerRect.height<=this.containerRect.bottom,a=e>=this.containerRect.left,r=e+this.subtitlesContainerRect.width<=this.containerRect.right;this.votSubtitlesContainer.style.top=n&&i?o-this.containerRect.y+"px":n?this.containerRect.height-this.subtitlesContainerRect.height+"px":"0px",this.votSubtitlesContainer.style.left=a&&r?e-this.containerRect.x+"px":a?this.containerRect.width-this.subtitlesContainerRect.width+"px":"0px"}}onTimeUpdate(){this.update()}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,this.votSubtitlesContainer.innerHTML="")}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords!==!!t&&(this.highlightWords=!!t,this.update())}update(){if(!this.video)return;let t="",e=this.highlightWords&&this.subtitles?.containsTokens;const o=1e3*this.video.currentTime,n=this.subtitles?.subtitles?.findLast((t=>t.startMsthis.maxLength){let t=[],n=0,i=0,a=0;for(let o=0;othis.maxLength){let r=e.slice(n,i+1);r.at(0)&&" "===r.at(0).text&&(r=r.slice(1)),r.at(-1)&&" "===r.at(-1).text&&(r=r.slice(0,r.length-1)),t.push({startMs:e[n].startMs,durationMs:e[i].startMs+e[i].durationMs-e[n].startMs,tokens:r}),n=o,a=0}i=o}for(let n=0;ne||o>n.startMs-100&&e-o<275?'class="passed"':""}>${n.text}`}}else if(n.text.length>this.maxLength){let e=n.text.match(this.maxLengthRegexp),i=n.durationMs/e.length;for(let a=0;a${t.replace("\\n","
")}`:"")}}function yt(){return wt()?.player}function wt(){return document.querySelector(".vjs-v6")}const xt=async function(t="en"){let e=null;const o=yt(),{duration:n}=o?.cache_||{},{courseId:i,tracks:a,sources:r}=o?.options_||{},s=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(r),l=await async function(t){const e=await fetch(`https://www.coursera.org/api/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}(i);let d=l?.primaryLanguageCodes?.[0];d=d?(0,S.eL)(d):"en",f.includes(d)||(d="en");const c=function(t,e,o){let n=t?.find((t=>(0,S.eL)(t.srclang)===e));return n||(n=t?.find((t=>(0,S.eL)(t.srclang)===o))||t?.[0]),n?.src}(a,d,t);console.log(`videoURL: ${s}, subtitlesURL: ${c}`),c&&s?e=[{target:"video_file_url",targetUrl:s},{target:"subtitles_file_url",targetUrl:`https://www.coursera.org${c}`}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${s}, subtitlesURL: ${c}`);const u={duration:n,detectedLanguage:d,translationHelp:e};return b.Z.log("coursera video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},St="https://www.udemy.com/api-2.0";async function kt(t){const e=await fetch(`${St}/courses/${t}/?`+new URLSearchParams({"fields[course]":"locale",use_remote_version:"true",caching_intent:"true"}));return await e.json()}async function Tt(t,e,o){if(!(t.expires+2592e6>(new Date).getTime()&&t.accessToken))return void console.error(v.V.get("udemyAccessTokenExpired"));const n=`Bearer ${t.accessToken}`,i=await fetch(`${St}/users/me/subscribed-courses/${e}/lectures/${o}/?`+new URLSearchParams({"fields[lecture]":"asset","fields[asset]":"length,media_sources,captions"}),{headers:{"x-udemy-authorization":n,authorization:n}});return await i.json()}function Vt(){return Lt()?.player}function Mt(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(v.V.get("udemyModuleArgsNotFound")),{})}function Lt(){return document.querySelector(".vjs-v7")}const Ot=async function(t,e="en"){let o=null;const n=Vt();b.Z.log("udemyData",t);const i=Mt();b.Z.log("moduleData: ",i);const a=i.courseId,r=window.location.pathname.match(/learn\/lecture\/([^/]+)/)?.[1];b.Z.log(`CourseId: ${a}, lectureId: ${r}`);const s=await kt(a);b.Z.log("courseLang Data:",s);const l=await Tt(t,a,r);console.log("lecture Data:",l);let d=s?.locale?.locale;d=d?(0,S.eL)(d):"en",f.includes(d)||(d="en");const c=l?.asset?.length||n?.cache_?.duration,u=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(l?.asset?.media_sources)||function(){const t=Lt()?.querySelector("video")?.src;return!t?.startsWith("blob:")&&t}(),h=function(t,e,o){let n=t?.find((t=>(0,S.eL)(t.locale_id)===e));return n||(n=t?.find((t=>(0,S.eL)(t.locale_id)===o))||t?.[0]),n?.url}(l?.asset?.captions,d,e);console.log(`videoURL: ${u}, subtitlesURL: ${h}`),h&&u?o=[{target:"video_file_url",targetUrl:u},{target:"subtitles_file_url",targetUrl:h}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${u}, subtitlesURL: ${h}`);const p={duration:c,detectedLanguage:d,translationHelp:o};return b.Z.log("udemy video data:",p),console.log("[VOT] Detected language: ",p.detectedLanguage),p};o("./node_modules/requestidlecallback-polyfill/index.js");class Pt{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}function Et(t){return Array.from(t).map((t=>{const e=[];return t instanceof HTMLVideoElement&&e.push(t),t instanceof HTMLElement&&e.push(...Array.from(t.querySelectorAll("video"))),t?.shadowRoot?.querySelectorAll&&e.push(...Array.from(t.shadowRoot.querySelectorAll("video"))),e})).flat()}const Ct=[{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:".player-container"},{host:"youtube",url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:"tiktok",url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:"proxytok",url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tik.hostux.net","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{additionalData:"mobile",host:"twitch",url:"https://twitch.tv/",match:/^m.twitch.tv$/,selector:"main > div > section > div > div > div"},{host:"twitch",url:"https://twitch.tv/",match:t=>t.host.includes("clips.twitch.tv")||t.host.includes("player.twitch.tv")&&null===t.searchParams.get("channel")||t.host.includes("twitch.tv")&&(t.pathname.startsWith("/videos")||t.pathname.startsWith("/embed")||t.pathname.includes("/clip")),selector:".video-ref"},{host:"xvideos",url:"https://www.xvideos.com/",match:/^www.xvideos.com$/,selector:".video-bg-pic"},{host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{additionalData:"mobile",host:"vk",url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{host:"vk",url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:"vimeo",url:"https://vimeo.com/",match:/^(player.)?vimeo.com$/,selector:".player"},{host:"nine_gag",url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:"coub",url:"https://coub.com/view/",match:/^coub.com$/,selector:".viewer__player"},{host:"bitchute",url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".plyr__video-wrapper"},{host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap"},{additionalData:"old",host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:"twitter",url:"https://twitter.com/i/status/",match:/^twitter.com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:"mail_ru",url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:"coursera",url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6"},{host:"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)'},{host:"invidious",url:"https://youtu.be/",match:it,selector:"#player"},{host:"piped",url:"https://youtu.be/",match:at,selector:".shaka-video-container"},{host:"rumble",url:"https://rumble.com",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:"eporner",url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:"peertube",url:"tube.shanti.cafe",match:["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"],selector:".vjs-v7"},{host:"dailymotion",url:"https://www.dailymotion.com/video/",match:/^geo.dailymotion.com$/,selector:".player"},{host:"trovo",url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:"yandexdisk",url:"https://disk.yandex.ru/i/",match:/^disk.yandex.ru$/,selector:"yaplayertag > div:nth-of-type(1)"}],At=pt.getParser(window.navigator.userAgent).getResult(),Bt=[...it,...at],Ft=["playing","ratechange","play","waiting","pause"];function _t(t,e,o=!1){return t.map((t=>({label:`${o&&!w.includes(t)?"❌ ":""}${v.V.get("langs")[t]??t.toUpperCase()}`,value:t,selected:e===t})))}class qt{translateFromLang="en";translateToLang=S.KQ;timer;ytData="";videoData="";firstPlay=!0;audio=new Audio;hls=(0,S.QZ)();downloadTranslationUrl=null;downloadSubtitlesUrl=null;autoRetry;streamPing;volumeOnStart;tempOriginalVolume;tempVolume;subtitlesList=[];subtitlesListVideoId=null;videoLastSrcObject=null;constructor(t,e,o){b.Z.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.handleSrcChangedBound=this.handleSrcChanged.bind(this),this.srcObserver=new MutationObserver(this.handleSrcChangedBound),this.srcObserver.observe(this.video,{attributeFilter:["src","currentSrc"]}),this.srcObjectInterval=setInterval((async()=>{this.videoLastSrcObject!==this.video.srcObject&&(this.videoLastSrcObject=this.video.srcObject,await this.handleSrcChanged())}),100),this.stopTranslationBound=this.stopTranslation.bind(this),this.handleVideoEventBound=this.handleVideoEvent.bind(this),this.changeOpacityOnEventBound=this.changeOpacityOnEvent.bind(this),this.resetTimerBound=this.resetTimer.bind(this),this.init()}async init(){if(this.initialized)return;this.data={autoTranslate:await T.i.get("autoTranslate",0,!0),dontTranslateLanguage:await T.i.get("dontTranslateLanguage",S.KQ),dontTranslateYourLang:await T.i.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:await T.i.get("autoSetVolumeYandexStyle",1,!0),autoVolume:await T.i.get("autoVolume",k.sN,!0)/100,showVideoSlider:await T.i.get("showVideoSlider",1,!0),syncVolume:await T.i.get("syncVolume",0,!0),subtitlesMaxLength:await T.i.get("subtitlesMaxLength",300,!0),highlightWords:await T.i.get("highlightWords",0,!0),responseLanguage:await T.i.get("responseLanguage",S.KQ),defaultVolume:await T.i.get("defaultVolume",100,!0),udemyData:await T.i.get("udemyData",{accessToken:"",expires:0}),audioProxy:await T.i.get("audioProxy",(S.KQ,0),!0),showPiPButton:await T.i.get("showPiPButton",0,!0),translateAPIErrors:await T.i.get("translateAPIErrors",1,!0),translationService:await T.i.get("translationService",k.kF),detectService:await T.i.get("detectService",k.EY),m3u8ProxyHost:await T.i.get("m3u8ProxyHost",k.e6),proxyWorkerHost:await T.i.get("proxyWorkerHost",k.ez)},this.videoData=await this.getVideoData(),console.log("[db] data from db: ",this.data),this.subtitlesWidget=new ft(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.initUI(),this.initUIEvents();const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t,this.votButton.label.innerHTML=e}initUI(){this.votButton=ut.createVOTButton(v.V.get("translateVideo")),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!(0,S.qq)()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!(0,S.qq)()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=ut.createVOTMenu(v.V.get("VOTSettings")),this.container.appendChild(this.votMenu.container),this.votDownloadButton=ut.createIconButton(''),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=ut.createIconButton(''),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=ut.createIconButton(''),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=ut.createVOTLanguageSelect({fromTitle:v.V.get("langs")[this.video.detectedLanguage],fromDialogTitle:v.V.get("videoLanguage"),fromItems:[{label:v.V.get("langs").auto,value:"auto",selected:""},..._t(f,this.videoData.detectedLanguage)],fromOnSelectCB:async t=>{b.Z.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:v.V.get("langs")[this.video.responseLanguage],toDialogTitle:v.V.get("translationLanguage"),toItems:[..._t(f,this.videoData.responseLanguage,!0),{label:"─────────",value:"separator",disabled:!0},..._t(y,this.videoData.responseLanguage,!0)],toOnSelectCB:async t=>{const e=t.target.dataset.votValue;b.Z.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await T.i.set("responseLanguage",this.data.responseLanguage),b.Z.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=ut.createVOTSelect(v.V.get("VOTSubtitlesDisabled"),v.V.get("VOTSubtitles"),[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=ut.createSlider(`${v.V.get("VOTVolume")}: ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=ut.createSlider(`${v.V.get("VOTVolumeTranslation")}: ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=ut.createDialog(v.V.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=ut.createHeader(v.V.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=ut.createCheckbox(v.V.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=ut.createVOTSelect(v.V.get("langs")[T.i.syncGet("dontTranslateLanguage",S.KQ)],v.V.get("VOTDontTranslateYourLang"),_t(f,T.i.syncGet("dontTranslateLanguage",S.KQ)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await T.i.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:ut.createCheckbox(v.V.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.votAutoSetVolumeCheckbox=ut.createCheckbox(`${v.V.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=ut.createSlider(`${100*(this.data?.autoVolume??k.sN)}%`,100*(this.data?.autoVolume??k.sN),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=ut.createCheckbox(v.V.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votUdemyDataTextfield=ut.createTextfield(v.V.get("VOTUdemyData"),this.data?.udemyData?.accessToken??""),this.votUdemyDataTextfield.container.hidden="udemy"!==this.site.host,this.votSettingsDialog.bodyContainer.appendChild(this.votUdemyDataTextfield.container),this.votSyncVolumeCheckbox=ut.createCheckbox(v.V.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSyncVolumeCheckbox.container.hidden="youtube"!==this.site.host||"mobile"===this.site.additionalData,this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=ut.createVOTSelect(T.i.syncGet("translationService",k.kF),v.V.get("VOTTranslationService"),_t(P,T.i.syncGet("translationService",k.kF)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await T.i.set("translationService",this.data.translationService)},labelElement:ut.createCheckbox(v.V.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===v.V.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=ut.createVOTSelect(T.i.syncGet("detectService",k.EY),v.V.get("VOTDetectService"),_t(E,T.i.syncGet("detectService",k.EY)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await T.i.set("detectService",this.data.detectService)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=ut.createHeader(v.V.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesMaxLengthSlider=ut.createSlider(`${v.V.get("VOTSubtitlesMaxLength")}: ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesHighlightWordsCheckbox=ut.createCheckbox(v.V.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votProxyHeader=ut.createHeader(v.V.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=ut.createTextfield(v.V.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,k.e6),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=ut.createTextfield(v.V.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,k.ez),this.votProxyWorkerHostTextfield.container.hidden=!0,this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=ut.createCheckbox(v.V.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votAudioProxyCheckbox.container.hidden=!0,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=ut.createHeader(v.V.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=ut.createVOTSelect(v.V.get("langs")[T.i.syncGet("locale-lang-override","auto")],v.V.get("VOTMenuLanguage"),_t(v.Z,T.i.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await T.i.set("locale-lang-override",t.target.dataset.votValue)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=ut.createCheckbox(v.V.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!(0,S.qq)(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=ut.createInformation(`${v.V.get("VOTVersion")}:`,GM_info.script.version),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=ut.createInformation(`${v.V.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=ut.createInformation(`${v.V.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=ut.createInformation(`${v.V.get("VOTBrowser")}:`,`${At.browser.name} ${At.browser.version} (${At.os.name} ${At.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=ut.createButton(v.V.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{if(this.audio.src)return b.Z.log("[click translationBtn] audio.src is not empty"),void this.stopTraslate();try{b.Z.log("[click translationBtn] trying execute translation");const t=(0,S.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");await this.translateExecutor(t)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}})),this.votButton.pipButton.addEventListener("click",(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(()=>{console.log(this.downloadSubtitlesUrl),this.downloadSubtitlesUrl&&window.open(this.downloadSubtitlesUrl,"_blank").focus()})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(void 0===document.fullscreen||document.fullscreen)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.mozCancelFullscreen&&document.mozCancelFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);if(this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`,this.setVideoVolume(e/100),1===this.data.syncVolume){const t=Number(this.votVideoTranslationVolumeSlider.input.value),o=ht(this.audio,e,t,this.tempOriginalVolume);this.votVideoTranslationVolumeSlider.input.value=o,this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ut.updateSlider(this.votVideoTranslationVolumeSlider.input),this.tempVolume=o,this.tempOriginalVolume=e}})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(async t=>{this.data.defaultVolume=Number(t.target.value),await T.i.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${this.data.defaultVolume}%`,this.audio.volume=this.data.defaultVolume/100,1===this.data.syncVolume&&this.syncTranslationWithVideo(this.data.defaultVolume)})),this.votAutoTranslateCheckbox.input.addEventListener("change",(async t=>{this.data.autoTranslate=Number(t.target.checked),await T.i.set("autoTranslate",this.data.autoTranslate),b.Z.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(async t=>{this.data.dontTranslateYourLang=Number(t.target.checked),await T.i.set("dontTranslateYourLang",this.data.dontTranslateYourLang),b.Z.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await T.i.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),b.Z.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})),this.votAutoSetVolumeSlider.input.addEventListener("input",(async t=>{const e=Number(t.target.value);this.data.autoVolume=e/100,await T.i.set("autoVolume",e),this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(async t=>{this.data.showVideoSlider=Number(t.target.checked),await T.i.set("showVideoSlider",this.data.showVideoSlider),b.Z.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})),this.votUdemyDataTextfield.input.addEventListener("change",(async t=>{this.data.udemyData={accessToken:t.target.value,expires:(new Date).getTime()},await T.i.set("udemyData",this.data.udemyData),b.Z.log("udemyData value changed. New value: ",this.data.udemyData),window.location.reload()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.syncVolume=Number(t.target.checked),await T.i.set("syncVolume",this.data.syncVolume),b.Z.log("syncVolume value changed. New value: ",this.data.syncVolume)})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(async t=>{this.data.translateAPIErrors=Number(t.target.checked),await T.i.set("translateAPIErrors",this.data.translateAPIErrors),b.Z.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(async t=>{this.data.subtitlesMaxLength=Number(t.target.value),await T.i.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").innerHTML=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(async t=>{this.data.highlightWords=Number(t.target.checked),await T.i.set("highlightWords",this.data.highlightWords),b.Z.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(async t=>{this.data.showPiPButton=Number(t.target.checked),await T.i.set("showPiPButton",this.data.showPiPButton),b.Z.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!(0,S.qq)()||!this.data.showPiPButton,this.votButton.separator2.hidden=!(0,S.qq)()||!this.data.showPiPButton})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(async t=>{this.data.m3u8ProxyHost=t.target.value||k.e6,await T.i.set("m3u8ProxyHost",this.data.m3u8ProxyHost),b.Z.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(async t=>{this.data.proxyWorkerHost=t.target.value||k.ez,await T.i.set("proxyWorkerHost",this.data.proxyWorkerHost),b.Z.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),window.location.reload()})),this.votAudioProxyCheckbox.input.addEventListener("change",(async t=>{this.data.audioProxy=Number(t.target.checked),await T.i.set("audioProxy",this.data.audioProxy),b.Z.log("audioProxy value changed. New value: ",this.data.audioProxy)})),this.votResetSettingsButton.addEventListener("click",(async()=>{v.V.reset(),(await T.i.list()).filter((t=>!v.V.gmValues.includes(t))).forEach((t=>T.i.syncDelete(t))),window.location.reload()}))}releaseExtraEvents(){clearInterval(this.resizeInterval),this.resizeObserver?.disconnect(),"youtube"===this.site.host&&"mobile"!==this.site.additionalData&&this.syncVolumeObserver?.disconnect(),this.extraEvents?.forEach((t=>{t.element.removeEventListener(t.event,t.handler)}))}initExtraEvents(){this.extraEvents=[];const t=(t,e,o)=>{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{o.forEach((o=>{t(e,o,n)}))};if(this.resizeObserver=new ResizeObserver((t=>{t.forEach((t=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${t.contentRect.height}px`)}))})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),this.resizeInterval=setInterval((()=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`)}),500),"youtube"===this.site.host&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{t.forEach((t=>{"attributes"===t.type&&"aria-valuenow"===t.attributeName&&this.syncVideoVolumeSlider()}))}));const t=document.querySelector(".ytp-volume-panel");t&&this.syncVolumeObserver.observe(t,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0})}let o;document.addEventListener("click",(t=>{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),c=a.contains(e),u=r?.contains(e)??!1;b.Z.log(`[document click] ${s} ${l} ${d} ${c} ${u}`),s||l||c||u||(d||this.logout(0),this.votMenu.container.hidden=!0)})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".video-element-wrapper-js > div"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimerBound),t(this.votButton.container,"mousemove",this.changeOpacityOnEventBound),t(this.votMenu.container,"mousemove",this.changeOpacityOnEventBound),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEventBound),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),t(this.video,"abort",(()=>{b.Z.log("lipsync mode is abort"),this.stopTranslation(),this.videoData=""})),t(this.video,"progress",(async()=>{if(!this.firstPlay||1!==this.data.autoTranslate)return;const t=(0,S.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");try{await this.translateExecutor(t),this.firstPlay=!1}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t),this.firstPlay=!1}}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer(){clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),2e3)}changeOpacityOnEvent(t){clearTimeout(this.timer),this.logout(1),t.stopPropagation()}async changeSubtitlesLang(t){if(b.Z.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(v.V.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.downloadSubtitlesUrl=null;else{const e=await async function(t){let e=!1,o=await Promise.race([new Promise((async t=>{await(0,S._v)(5e3),e||console.error("[VOT] Failed to fetch subtitles. Reason: timeout"),e=!0,t([])})),new Promise((async o=>{b.Z.log("Fetching subtitles:",t),await fetch(t.url).then((t=>t.json())).then((t=>{e=!0,o(t)})).catch((t=>{console.error("[VOT] Failed to fetch subtitles. Reason:",t),e=!0,o({containsTokens:!1,subtitles:[]})}))}))]);return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^ +| +$/g,""))).join(" ");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(const i of t.subtitles){let a;if(i?.tokens?.length){if("yandex"!==e)return console.warn("[VOT] Unsupported subtitles tokens type: ",e),t.containsTokens=!1,null;a=mt(i)}else a=bt(i,n);n=a[a.length-1],o.push(Object.assign(Object.assign({},i),{tokens:a}))}return t.containsTokens=!0,o}(o,t.source),console.log("[VOT] subtitles:",o),o}(this.subtitlesList.at(parseInt(t)));this.subtitlesWidget.setContent(e),this.votDownloadSubtitlesButton.hidden=!1,this.downloadSubtitlesUrl=this.subtitlesList.at(parseInt(t))?.url}}async updateSubtitlesLangSelect(){const t=[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(v.V.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${v.V.get("VOTTranslatedFrom")} ${v.V.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${v.V.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){await this.changeSubtitlesLang("disabled");const t=(0,S.gJ)(this.site.host,this.video);if(!t)return console.error(`[VOT] ${v.V.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,void await this.updateSubtitlesLangSelect();this.subtitlesListVideoId!==t&&(this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),this.subtitlesList=await async function(t,e,n){const i="youtube"===t.host?q():[];let a=!1;const r=[...await Promise.race([new Promise((async t=>{await(0,S._v)(5e3),a||console.error("[VOT] Failed get yandex subtitles. Reason: timeout"),a=!0,t([])})),new Promise((i=>{!async function(t,e,n){try{b.Z.log("requestVideoSubtitles");const i=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const a=X(t,e);await i("/video-subtitles/get-subtitles",a,{"Vsubs-Signature":await vt(a),"Sec-Vsubs-Token":gt(!1)},n)}catch(t){console.error("[VOT]",t),n(!1)}}(`${t.url}${e}`,n,((t,e)=>{b.Z.log("[exec callback] Requesting video subtitles"),t||(console.error("[VOT] Failed get yandex subtitles"),a=!0,i([]));const o=tt(e);console.log("[VOT] Subtitles response: ",o);let n=o.subtitles??[];n=n.reduce(((t,e)=>(e.language&&!t.find((t=>{if("yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage)return t}))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),a=!0,i(n)}))}))]),...i].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===S.KQ||e.language===S.KQ))return t.language===S.KQ?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===n?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===n?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}));return console.log("[VOT] subtitles list",r),r}(this.site,t,this.videoData.detectedLanguage),this.subtitlesList?this.subtitlesListVideoId=t:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect())}getVideoVolume(){let t=this.video?.volume;return"youtube"===this.site.host&&(t=_()||t),t}setVideoVolume(t){"youtube"===this.site.host&&z(t)||(this.video.volume=t)}syncVideoVolumeSlider(){const t=Math.round(100*this.getVideoVolume());this.votVideoVolumeSlider.input.value=t,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${t}%`,ut.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(t))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(v.V.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(v.V.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncTranslationWithVideo(t){const e=Number(this.votVideoVolumeSlider.input.value),o=ht(this.video,t,e,this.tempVolume);this.votVideoVolumeSlider.input.value=o,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ut.updateSlider(this.votVideoVolumeSlider.input),this.tempOriginalVolume=o,this.tempVolume=t}async getVideoData(){const t={translationHelp:null,isStream:!1};if(t.duration=this.video?.duration||343,t.videoId=(0,S.gJ)(this.site.host,this.video),t.detectedLanguage=this.translateFromLang,t.responseLanguage=this.translateToLang,!t.videoId)return this.ytData={},t;if(window.location.hostname.includes("youtube.com"))this.ytData=await R(),t.isStream=this.ytData.isLive,""!==this.ytData.author&&(t.detectedLanguage=this.ytData.detectedLanguage,t.responseLanguage=this.translateToLang);else if(window.location.hostname.includes("rutube")||window.location.hostname.includes("my.mail.ru"))t.detectedLanguage="ru";else if(window.location.hostname.includes("bilibili.com"))t.detectedLanguage="zh";else if(window.location.hostname.includes("coursera.org")){const e=await xt(this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else if(window.location.hostname.includes("udemy.com")){const e=await Ot(this.data.udemyData,this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else"vk"!==this.site.host&&"piped"!==this.site.host&&"invidious"!==this.site.host&&"bitchute"!==this.site.host&&"rumble"!==this.site.host&&"peertube"!==this.site.host&&"dailymotion"!==this.site.host&&"trovo"!==this.site.host&&"yandexdisk"!==this.site.host||(t.detectedLanguage="auto");return t}videoValidator(){if("youtube"===this.site.host){if(b.Z.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage&&this.videoData.responseLanguage===this.data.dontTranslateLanguage)throw new m("VOTDisableFromYourLang");if(this.videoData.duration>14400)throw new m("VOTVideoIsTooLong")}return!0}lipSync(t=!1){if(b.Z.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!==t)"pause"===t&&(b.Z.log("lipsync mode is pause"),this.audio.pause()),"stop"===t&&(b.Z.log("lipsync mode is stop"),this.audio.pause()),"waiting"===t&&(b.Z.log("lipsync mode is waiting"),this.audio.pause()),"playing"===t&&(b.Z.log("lipsync mode is playing"),this.audio.play());else{b.Z.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",v.V.get("grantPermissionToAutoPlay")),new m("grantPermissionToAutoPlay");if("NotSupportedError"===t.name)throw this.transformBtn("error",Bt.includes(window.location.hostname)?v.V.get("neededAdditionalExtension"):v.V.get("audioFormatNotSupported")),Bt.includes(window.location.hostname)?new m("neededAdditionalExtension"):new m("audioFormatNotSupported")}))}else b.Z.log("lipsync mode is not set")}handleVideoEvent(t){b.Z.log(`video ${t.type}`),this.lipSync(t.type)}stopTraslate(){Ft.forEach((t=>this.video.removeEventListener(t,this.handleVideoEventBound))),this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",v.V.get("translateVideo")),this.volumeOnStart&&(b.Z.log(`Volume on start: ${this.volumeOnStart}`),"youtube"===this.site.host?z(this.volumeOnStart):this.video.volume=this.volumeOnStart),clearInterval(this.streamPing),this.hls?.destroy(),this.hls=(0,S.QZ)()}async translateExecutor(t){this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),b.Z.log("Run videoValidator"),this.videoValidator(),b.Z.log("Run translateFunc"),this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}translateFunc(t,e,n,i,a){console.log("[VOT] Video Data: ",this.videoData);const r=`${this.site.url}${t}`;if(this.videoValidator(),e)return b.Z.log("Executed stream translation"),void function(t,e,n,i){b.Z.log(`Translate stream (url: ${t}, requestLang: ${e}, responseLang: ${n})`),async function(t,e,n,i){try{b.Z.log("requestStreamTranslation");const a=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const r=ot(t,e,n);await a("/stream-translation/translate-stream",r,{"Vtrans-Signature":await vt(r),"Sec-Vtrans-Token":gt(!1)},i)}catch(t){console.error("[VOT]",t),i(!1)}}(t,e,n,((t,e)=>{if(b.Z.log("[exec callback] Requesting stream translation"),!t)return void i(!1,v.V.get("requestTranslationFailed"));const o=nt(e);switch(console.log("[VOT] Stream Translation response: ",o),o.interval){case 10:i(!1,o.interval,v.V.get("translationTakeFewMinutes"));break;case 20:i(!0,o.interval,o||v.V.get("audioNotReceived"));break;case 0:i(!1,o.interval,v.V.get("streamNoConnectionToServer"))}}))}(r,n,i,(async(r,s,l)=>{if(b.Z.log("[exec callback] translateStream callback"),(0,S.gJ)(this.site.host,this.video)!==t)return;if(!r||!l.translatedInfo)return"VOTLocalizedError"===l?.name?this.transformBtn("error",l.localizedMessage):1===this.data.translateAPIErrors&&"ru"!==v.V.lang?(this.transformBtn("error",`${v.V.get("VOTTranslatingError")}...`),this.transformBtn("error",await O(l,"ru",v.V.lang))):this.transformBtn("error",l),void(10===s&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),1e3*s)));this.transformBtn("success",v.V.get("disableTranslate")),console.log(l);const d=l.pingId;b.Z.log(`Stream pingId: ${d}`),this.streamPing=setInterval((async()=>await async function(t,e){try{b.Z.log("requestStreamPing");const n=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const i=et(t);await n("/stream-translation/ping-stream",i,{"Vtrans-Signature":await vt(i),"Sec-Vtrans-Token":gt(!1)},e)}catch(t){console.error("[VOT]",t),e(!1)}}(d,(t=>b.Z.log("Stream ping result: ",t)))),1e3*s),b.Z.log(l.translatedInfo.url);const c=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(l.translatedInfo.url)}`;if(b.Z.log(c),this.hls)this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){b.Z.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t,e){b.Z.log("manifest loaded, found "+e.levels.length+" quality level")})),this.hls.loadSource(c),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t,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()}})),b.Z.log(this.hls);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new m("audioFormatNotSupported");this.audio.src=c}D(this.video,10),this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),this.video.src||this.video.currentSrc||this.video.srcObject?(this.video&&!this.video.paused&&this.lipSync("play"),Ft.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ut.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=c):this.stopTranslation()}));if(["udemy","coursera"].includes(this.site.host)&&!a)throw new m("VOTTranslationHelpNull");!function(t,e,n,i,a,r){b.Z.log(`Translate video (url: ${t}, duration: ${e}, requestLang: ${n}, responseLang: ${i})`),b.Z.log("translationHelp:",a),async function(t,e,n,i,a,r){try{b.Z.log("requestVideoTranslation");const s=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const l=Q(t,e,n,i,a);await s("/video-translation/translate",l,{"Vtrans-Signature":await vt(l),"Sec-Vtrans-Token":gt(!1)},r)}catch(t){console.error("[VOT]",t),r(!1)}}(t,e,n,i,a,((t,e)=>{if(b.Z.log("[exec callback] Requesting video translation"),!t)return void r(!1,v.V.get("requestTranslationFailed"));const o=J(e);switch(console.log("[VOT] Translation response: ",o),o.status){case 0:r(!1,o.message);break;case 1:r(!!o.url,o.url||v.V.get("audioNotReceived"));break;case 2:r(!1,o.remainingTime?(0,S.PG)(o.remainingTime):v.V.get("translationTakeFewMinutes"));break;case 3:r(!1,v.V.get("videoBeingTranslated"))}}))}(r,this.videoData.duration,n,i,a,(async(o,r)=>{if(b.Z.log("[exec callback] translateVideo callback"),(0,S.gJ)(this.site.host,this.video)!==t)return;if(!o)return"VOTLocalizedError"===r?.name?this.transformBtn("error",r.localizedMessage):1!==this.data.translateAPIErrors||r.includes(v.V.get("translationTake"))||"ru"===v.V.lang?this.transformBtn("error",r):(this.transformBtn("error",v.V.get("VOTTranslatingError")),this.transformBtn("error",await O(r,"ru",v.V.lang))),r.includes(v.V.get("translationTake"))&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),6e4)),void console.error("[VOT]",r);if(this.audio.src=r,this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),"twitter"===this.site.host&&document.querySelector('div[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslationBound),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return void this.stopTranslation();const s=["twitch","vimeo","facebook","rutube","twitter","bilibili","mail_ru","rumble","eporner"];for(let t=0;t{t.forEach((t=>{"attributes"===t.type&&"src"===t.attributeName&&t.target===this.video&&""!==t.target.src&&(this.stopTranslation(),this.firstPlay=!0)}))})).observe(this.container,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0});break}this.video&&!this.video.paused&&this.lipSync("play"),Ft.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.transformBtn("success",v.V.get("disableTranslate")),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ut.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=r}))}stopTranslation(){this.stopTraslate(),this.syncVideoVolumeSlider()}async waitInitialization(){let t=!1;return await Promise.race([new Promise((async e=>{await(0,S._v)(1e3),t||console.error("[VOT] Initialization timeout"),t=!0,e(!1)})),new Promise((async e=>{for(;!this.initialized;)await(0,S._v)(100);t=!0,e(!0)}))])}async handleSrcChanged(){if(b.Z.log("[VideoHandler] src changed",this),!await this.waitInitialization())return;this.stopTranslation(),this.videoData=await this.getVideoData(),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru"}async release(){b.Z.log("[VideoHandler] release"),await this.waitInitialization()&&(this.initialized=!1,this.stopTranslation(),this.releaseExtraEvents(),this.subtitlesWidget.release(),this.srcObserver.disconnect(),clearInterval(this.srcObjectInterval),this.votButton.container.remove(),this.votMenu.container.remove())}}const Rt=new class{constructor(){this.onVideoAdded=new Pt,this.onVideoRemoved=new Pt,this.handleVideoAddedBound=this.handleVideoAdded.bind(this),this.handleVideoRemovedBound=this.handleVideoRemoved.bind(this),this.observer=new MutationObserver((t=>{window.requestIdleCallback((()=>{t.forEach((t=>{"childList"===t.type&&(Et(t.addedNodes).forEach(this.handleVideoAddedBound),Et(t.removedNodes).forEach(this.handleVideoRemovedBound))}))}),{timeout:1e3})}))}enable(){this.observer.observe(document,{childList:!0,subtree:!0}),document.querySelectorAll("video").forEach(this.handleVideoAddedBound)}disable(){this.observer.disconnect()}handleVideoAdded(t){this.onVideoAdded.dispatch(t)}handleVideoRemoved(t){document.contains(t)||this.onVideoRemoved.dispatch(t)}},zt=new WeakMap;(async function(){if(b.Z.log("Loading extension..."),await v.V.update(),b.Z.log(`Selected menu language: ${v.V.lang}`),GM_info?.scriptHandler&&x.includes(GM_info.scriptHandler))return console.error(`[VOT] ${v.V.getDefault("unSupportedExtensionError").format(GM_info.scriptHandler)}`),alert(`[VOT] ${v.V.get("unSupportedExtensionError").format(GM_info.scriptHandler)}`);b.Z.log("Extension compatibility passed..."),Rt.onVideoAdded.addListener((t=>{for(const e of Ct.filter((t=>{const e=t=>t instanceof RegExp&&t.test(window.location.hostname)||"string"==typeof t&&window.location.hostname.includes(t)||"function"==typeof t&&t(new URL(window.location));return!!(e(t.match)||t.match instanceof Array&&t.match.some((t=>e(t))))&&t.host&&t.url}))){if(!e)continue;let o;if(e.shadowRoot)o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.shadowRoot.contains(t))):t.parentElement,o=o&&o.shadowRoot?o.parentElement:o;else{const n=At.browser.version.split(".")?.[0];if(e.selector?.includes(":not")&&e.selector?.includes("*")&&n&&("Chrome"===At.browser.name&&Number(n)<88||"Firefox"===At.browser.name&&Number(n)<84)){const n=e.selector?.split(" *")?.[0];o=n?Object.values(document.querySelectorAll(n)).find((e=>e.contains(t))):t.parentElement}else o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.contains(t))):t.parentElement}if(o&&!("rumble"===e.host&&o.querySelector("vot-block")||("peertube"===e.host&&(e.url=window.location.origin),zt.has(t)))){zt.set(t,new qt(t,o,e));break}}})),Rt.onVideoRemoved.addListener((async t=>{zt.has(t)&&(await zt.get(t).release(),zt.delete(t))})),Rt.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file +(()=>{var t={"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[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}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var c=s.default.find(r,(function(t){return e.isPlatform(t)}));if(c){var u=this.satisfies(o[c]);if(void 0!==u)return u}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{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(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{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(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{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(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss":(t,e,o)=>{"use strict";o.d(e,{Z:()=>s});var n=o("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),i=o.n(n),a=o("./node_modules/css-loader/dist/runtime/api.js"),r=o.n(a)()(i());r.push([t.id,'.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) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer;transition:box-shadow .2s}.vot-button[hidden]{display:none !important}.vot-button::-moz-focus-inner{border:none}.vot-button::before,.vot-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-button::before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.vot-button:hover::before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.vot-button:active::after{opacity:.32;background-size:100% 100%;transition:background-size 0s}.vot-button:disabled{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.12);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);box-shadow:none;cursor:initial}.vot-button:disabled::before,.vot-button:disabled::after{opacity:0}.vot-outlined-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:solid 1px;border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.24);border-radius:4px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:34px;outline:none;cursor:pointer}.vot-outlined-button[hidden]{display:none !important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button::before,.vot-outlined-button::after{content:"";position:absolute;border-radius:3px;top:0;right:0;bottom:0;left:0;opacity:0}.vot-outlined-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-outlined-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-outlined-button:disabled::before,.vot-outlined-button:disabled::after{opacity:0}.vot-text-button{--vot-helper-theme: var( --vot-theme-rgb, var(--vot-primary-rgb, 33, 150, 243) );position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:4px;padding:0 8px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-text-button[hidden]{display:none !important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button::before,.vot-text-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-text-button::before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s}.vot-text-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-text-button:disabled::before,.vot-text-button:disabled::after{opacity:0}.vot-icon-button{--vot-helper-onsurface: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);position:relative;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-radius:50%;padding:0;width:36px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);background-color:rgba(0,0,0,0);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;font-weight:500;line-height:36px;outline:none;cursor:pointer}.vot-icon-button[hidden]{display:none !important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button::before,.vot-icon-button::after{content:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.vot-icon-button::before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button::after{background:radial-gradient(circle at center, currentColor 1%, transparent 1%) center/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 0s,opacity 0s}.vot-icon-button:disabled{background-color:rgba(0,0,0,0);color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);fill:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-icon-button:disabled::before,.vot-icon-button:disabled::after{opacity:0}.vot-textfield{--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), 0.38 ) !important;--vot-helper-safari2: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari3: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;position:relative !important;display:inline-block;padding-top:6px !important;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-textfield[hidden]{display:none !important}.vot-textfield>input,.vot-textfield>textarea{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:0 !important;border-style:solid !important;border-width:1px !important;border-color:rgba(0,0,0,0) var(--vot-helper-safari2) var(--vot-helper-safari2) !important;border-radius:4px !important;padding:15px 13px 15px !important;width:100% !important;height:inherit !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;-webkit-text-fill-color:currentColor !important;background-color:rgba(0,0,0,0) !important;box-shadow:inset 1px 0 rgba(0,0,0,0),inset -1px 0 rgba(0,0,0,0),inset 0 -1px rgba(0,0,0,0) !important;font-family:inherit !important;font-size:inherit !important;line-height:inherit !important;caret-color:var(--vot-helper-theme) !important;transition:border .2s,box-shadow .2s !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{position:absolute !important;top:0 !important;left:0 !important;display:flex !important;width:100% !important;max-height:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;font-size:75% !important;line-height:15px !important;cursor:text !important;transition:color .2s,font-size .2s,line-height .2s !important;pointer-events:none !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;display:block !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin-top:6px !important;border-top:solid 1px var(--vot-helper-safari2) !important;min-width:10px !important;height:8px !important;pointer-events:none !important;box-shadow:inset 0 1px rgba(0,0,0,0) !important;transition:border .2s,box-shadow .2s !important}.vot-textfield>input+span::before,.vot-textfield>textarea+span::before{margin-right:4px !important;border-left:solid 1px rgba(0,0,0,0) !important;border-radius:4px 0 !important}.vot-textfield>input+span::after,.vot-textfield>textarea+span::after{flex-grow:1 !important;margin-left:4px !important;border-right:solid 1px rgba(0,0,0,0) !important;border-radius:0 4px !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:rgba(0,0,0,0) !important}.vot-textfield:hover>input,.vot-textfield:hover>textarea{border-color:rgba(0,0,0,0) var(--vot-helper-safari3) var(--vot-helper-safari3) !important}.vot-textfield:hover>input+span::before,.vot-textfield:hover>input+span::after,.vot-textfield:hover>textarea+span::before,.vot-textfield:hover>textarea+span::after{border-top-color:var(--vot-helper-safari3) !important}.vot-textfield:hover>input:not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3) !important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:rgba(0,0,0,0) 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:rgba(0,0,0,0) var(--vot-helper-safari1) var(--vot-helper-safari1) !important;color:rgba(var(--vot-onsurface-rgb, 0, 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{border-top-color:var(--vot-helper-safari1) !important}.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:rgba(0,0,0,0) !important}@media not all and (min-resolution: 0.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;position:relative;display:inline-block;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-checkbox[hidden]{display:none !important}.vot-checkbox>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:1;position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:3px 1px;border:solid 2px;background:rgba(0,0,0,0);border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6);border-radius:2px;width:18px;height:18px;outline:none;cursor:pointer;transition:border-color .2s,background-color .2s}.vot-checkbox>input+span{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-left:30px;width:inherit;cursor:pointer}.vot-checkbox>input+span::before{content:"";position:absolute;left:-10px;top:-8px;display:block;border-radius:50%;width:40px;height:40px;background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0));opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s,transform .2s}.vot-checkbox>input+span::after{content:"";z-index:1;display:block;position:absolute;top:3px;left:1px;-webkit-box-sizing:content-box !important;-moz-box-sizing:content-box !important;box-sizing:content-box !important;width:10px;height:5px;border:solid 2px rgba(0,0,0,0);border-right-width:0;border-top-width:0;pointer-events:none;transform:translate(3px, 4px) rotate(-45deg);transition:border-color .2s}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.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))}.vot-checkbox>input:indeterminate+span::after{border-left-width:0;transform:translate(4px, 3px)}.vot-checkbox:hover>input+span::before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6)}.vot-checkbox:active>input+span::before{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{border-color:rgba(0,0,0,0);background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38)}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38);cursor:initial}.vot-checkbox>input:disabled+span::before{opacity:0;transform:scale(0)}.vot-slider{--vot-safari-helper1: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.04 ) !important;--vot-safari-helper2: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.12 ) !important;--vot-safari-helper3: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.16 ) !important;--vot-safari-helper4: rgba( var(--vot-primary-rgb, 33, 150, 243), 0.24 ) !important;display:inline-block;width:100% !important;color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !important;font-family:var(--vot-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system) !important;font-size:16px !important;line-height:1.5 !important;text-align:start !important}.vot-slider[hidden]{display:none !important}.vot-slider>input{-webkit-appearance:none !important;appearance:none !important;position:relative !important;top:24px !important;display:block !important;margin:0 0 -36px !important;width:100% !important;height:36px !important;background-color:rgba(0,0,0,0) !important;cursor:pointer !important}.vot-slider>input:last-child{position:static !important;margin:0 !important}.vot-slider>span{display:inline-block !important;margin-bottom:36px !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), 0.38) !important}.vot-slider>input::-webkit-slider-runnable-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-webkit-slider-thumb{margin:0 !important;appearance:none !important;-webkit-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1) !important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4) !important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb, 0, 0, 0)) !important;color:rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb, 255, 255, 255)) !important;transform:scale(4, 4) !important}.vot-slider>input::-moz-range-track{margin:17px 0 !important;border-radius:1px !important;width:100% !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-moz-range-thumb{appearance:none !important;-moz-appearance:none !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider>input::-moz-range-progress{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.87) !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, 4) !important}.vot-slider>input::-moz-focus-outer{border:none !important}.vot-slider>input::-ms-track{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;margin:17px 0 !important;border:none !important;border-radius:1px !important;padding:0 17px !important;width:100% !important;height:2px !important;background-color:rgba(0,0,0,0) !important}.vot-slider>input::-ms-fill-lower{border-radius:1px !important;height:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-slider>input::-ms-fill-upper{border-radius:1px !important;height:2px !important;background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input::-ms-thumb{appearance:none !important;margin:0 17px !important;border:none !important;border-radius:50% !important;height:2px !important;width:2px !important;background-color:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important;transform:scale(6, 6) !important;transition:box-shadow .2s !important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.04) !important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb, 33, 150, 243), 0.24) !important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.38) !important;opacity:.38 !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, 4) !important}.vot-slider>input::before{content:"" !important;display:block !important;position:absolute !important;width:calc(100%*var(--vot-progress, 0)) !important;height:2px !important;top:calc(50% - 1px) !important;background:rgb(var(--vot-primary-rgb, 33, 150, 243)) !important}.vot-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0) !important;--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87) !important;--vot-helper-safari1: rgba(var(--vot-onsurface-rgb, 0, 0, 0), 0.6) !important;--vot-helper-safari2: rgba( var(--vot-onsurface-rgb, 0, 0, 0), 0.87 ) !important;display:flex;align-items:center;justify-content:space-between;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:14px;line-height:1.5;text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-select[hidden]{display:none !important}.vot-select-label{font-size:16px}.vot-select-outer{display:flex;align-items:center;justify-content:space-between;max-width:120px;width:120px;padding:0 5px;border-style:solid !important;border-width:1px !important;border-color:var(--vot-helper-safari1) !important;border-radius:4px !important;cursor:pointer;transition:border .2s !important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2) !important}.vot-select-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vot-select-arrow-icon{width:20px;height:32px;display:flex;justify-content:center;align-items:center}.vot-select-content-list{display:flex;flex-direction:column}.vot-select-content-list .vot-select-content-item{padding:5px 10px;border-radius:8px;cursor:pointer}.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), 0.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb, 33, 150, 243), 0.1) !important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none !important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-weight:bold;line-height:1.5;text-align:start}.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{display:flex;color:rgba(var(--vot-helper-onsurface-rgb), 0.87);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;text-align:start}.vot-info[hidden]{display:none !important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb), 0.5);flex:1;margin-left:8px}.vot-lang-select{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);display:flex;align-items:center;justify-content:space-between;color:var(--vot-helper-theme);fill:var(--vot-helper-theme)}.vot-lang-select[hidden]{display:none !important}.vot-lang-select-icon{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.vot-segmented-button{--vot-helper-theme-rgb: var(--vot-onsurface-rgb, 0, 0, 0);--vot-helper-theme: rgba(var(--vot-helper-theme-rgb), 0.87);overflow:hidden;position:absolute;left:50%;top:5rem;transform:translate(-50%);user-select:none;display:flex;align-items:center;height:32px;max-width:100vw;background:rgb(var(--vot-surface-rgb, 255, 255, 255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);border-radius:4px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;cursor:default;transition:opacity .5s;z-index:100}.vot-segmented-button[hidden]{display:none !important}.vot-segmented-button *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-segmented-button .vot-separator{width:1px;height:50%;background:rgba(var(--vot-helper-theme-rgb), 0.1)}.vot-segmented-button .vot-separator[hidden]{display:none !important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;height:100%;padding:0 8px;background-color:rgba(0,0,0,0);color:inherit;transition:background-color 100ms ease-in-out;border:none}.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:"";position:absolute;border-radius:inherit;top:0;right:0;bottom:0;left:0;opacity:0}.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 at center, currentColor 1%, transparent 1%) center/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 0s}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{margin-left:8px;white-space:nowrap}.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 svg{width:fit-content}.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), 0.87);overflow:hidden;position:absolute;left:50%;top:calc(5rem + 32px + 16px);user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);border-radius:8px;font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;min-width:300px;cursor:default;z-index:100;visibility:visible;opacity:1;transform-origin:top;transform:translate(-50%) scale(1);transition:opacity .3s,transform .1s}.vot-menu *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-menu[hidden]{pointer-events:none;display:block !important;pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%) scale(0)}.vot-menu-content-wrapper{display:flex;flex-direction:column;min-height:100px;max-height:calc(var(--vot-container-height, 75vh) - (5rem + 32px + 16px)*2);overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-menu-header-container:empty{padding:0 0 16px 0}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0;text-align:start}.vot-menu-title{flex:1;font-size:16px;line-height:1;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 16px;gap:8px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar,.vot-menu-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-menu-footer-container:empty{padding:16px 0 0 0}.vot-dialog-container{visibility:visible;position:absolute;z-index:10000}.vot-dialog-container[hidden]{display:block !important;pointer-events:none;visibility:hidden}.vot-dialog-container *{-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important}.vot-dialog-backdrop{background-color:rgba(0,0,0,.6);position:fixed;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .3s}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.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), 0.87);display:block;position:fixed;top:50%;bottom:50%;max-width:initial;max-height:initial;width:min(var(--vot-dialog-width, 512px),100%);height:fit-content;inset-inline-start:0px;inset-inline-end:0px;inset-block-start:0px;inset-block-end:0px;border-radius:8px;margin:auto;padding:0;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);box-shadow:0 0 16px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.24);font-family:var(--vot-font-family, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);font-size:16px;line-height:1.5;user-select:none;visibility:visible;overflow:auto;overflow-y:hidden;opacity:1;transform-origin:center;transform:scale(1);transition:opacity .3s,transform .1s}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transform:scale(0.5);transition:opacity .1s,transform .2s}.vot-dialog-content-wrapper{display:flex;flex-direction:column;max-height:75vh;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;display:flex;min-height:31px}.vot-dialog-header-container:empty{padding:0 0 20px 0}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{display:flex;flex:1;font-size:inherit;font-weight:inherit;margin:0;outline:0}.vot-dialog-title{flex:1;font-size:115.3846153846%;font-weight:bold;line-height:1;padding-bottom:16px;padding-inline-end:20px;padding-inline-start:20px;padding-top:20px}.vot-dialog-body-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:column;min-height:1.375rem;overflow:auto;padding:0 20px;gap:16px;overscroll-behavior:contain;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb), 0.1) var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar,.vot-dialog-body-container::-webkit-scrollbar-track{height:12px !important;width:12px !important;background:var(--vot-helper-surface) !important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb), 0.1) !important;-webkit-border-radius:1ex !important;border:5px solid var(--vot-helper-surface) !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;display:flex;justify-content:flex-end;padding-bottom:16px;padding-inline-end:16px;padding-inline-start:16px;padding-top:16px}.vot-dialog-footer-container:empty{padding:20px 0 0 0}.vot-subtitles-widget{display:flex;justify-content:center;align-items:center;position:absolute;width:50%;max-height:100%;min-height:20%;z-index:100;left:25%;top:75%;pointer-events:none}.vot-subtitles{position:relative;max-width:100%;max-height:100%;width:max-content;background:var(--vot-subtitles-background, rgba(46, 47, 52, 0.8));color:var(--vot-subtitles-color, rgb(227, 227, 227));border-radius:1rem;pointer-events:all;padding:1rem;font-size:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color, rgb(33, 150, 243))}:root{--vot-font-family: "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system;--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-background: rgba(var(--vot-surface-rgb, 46, 47, 52), 0.8);--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{display:block}',""]);const s=r},"./node_modules/css-loader/dist/runtime/api.js":t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o="",n=void 0!==e[5];return e[4]&&(o+="@supports (".concat(e[4],") {")),e[2]&&(o+="@media ".concat(e[2]," {")),n&&(o+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),o+=t(e),n&&(o+="}"),e[2]&&(o+="}"),e[4]&&(o+="}"),o})).join("")},e.i=function(t,o,n,i,a){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(n)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=a),o&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=o):c[2]=o),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},"./node_modules/css-loader/dist/runtime/noSourceMaps.js":t=>{"use strict";t.exports=function(t){return t[1]}},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":t=>{"use strict";var e=[];function o(t){for(var o=-1,n=0;n{"use strict";var e={};t.exports=function(t,o){var n=function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}e[t]=o}return e[t]}(t);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(t,e,o)=>{"use strict";t.exports=function(t){var e=o.nc;e&&t.setAttribute("nonce",e)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(o){!function(t,e,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var a=o.sourceMap;a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(n,t,e.options)}(e,t,o)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},"./src/config/config.js":(t,e,o)=>{"use strict";o.d(e,{EY:()=>u,I1:()=>s,Rr:()=>l,e6:()=>a,ez:()=>r,iF:()=>i,jm:()=>h,kF:()=>c,rm:()=>p,sN:()=>d});var n=o("./src/utils/utils.js");const i="api.browser.yandex.ru",a="m3u8proxy.toil-dump.workers.dev",r="uk"===n.KQ?"vot-new.toil-dump.workers.dev":"vot.deno.dev",s="xtGCyGdTY2Jy6OMEKdTuXev3Twhkamgm",l="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 YaBrowser/23.7.1.1140 Yowser/2.5 Safari/537.36",d=.15,c="yandex",u="yandex",h={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},p={yandex:"https://translate.toil.cc/translate"}},"./src/localization/localizationProvider.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>r,V:()=>s});const n=JSON.parse('{"__version__":3,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}');var i=o("./src/utils/debug.js"),a=o("./src/utils/storage.js");const r=["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"],s=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=a.i.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(a.i.syncGet("locale-phrases",""))}reset(){this.gmValues.forEach((t=>a.i.syncDelete(t)))}async update(t=!1){(t||2!==await a.i.get("locale-version",0,!0)||await a.i.get("locale-lang")!==this.lang)&&(i.Z.log("Updating locale..."),await fetch(`https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/src/localization/locales/${this.lang}.json`).then((t=>{if(200===t.status)return t.text();throw t.status})).then((async t=>{await a.i.set("locale-phrases",t),this.setLocaleFromJsonString(t);const e=this.getFromLocale(this.locale,"__version__");"number"==typeof e&&await a.i.set("locale-version",e),await a.i.set("locale-lang",this.lang)})).catch((async t=>{console.error("[VOT] [localizationProvider] failed get locale, cause:",t),this.setLocaleFromJsonString(await a.i.get("locale-phrases",""))})))}setLocaleFromJsonString(t){try{this.locale=JSON.parse(t)??{}}catch(t){console.error("[VOT] [localizationProvider]",t),this.locale={}}}getFromLocale(t,e){const o=e.split(".").reduce(((t,e)=>{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(n,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(n,t)??t}}},"./src/utils/debug.js":(t,e,o)=>{"use strict";o.d(e,{Z:()=>n});const n={log:(...t)=>{}}},"./src/utils/storage.js":(t,e,o)=>{"use strict";o.d(e,{i:()=>i});var n=o("./src/utils/debug.js");const i=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,n.Z.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);let n=window.localStorage.getItem(t);if("udemyData"===t&&"string"==typeof n)try{n=JSON.parse(n)}catch{n=e}return o?Number(n)??Number(e):n??e}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):new Promise((n=>{n(this.syncGet(t,e,o))}))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):("udemyData"===t&&(e=JSON.stringify(e)),window.localStorage.setItem(t,e))}async set(t,e){return this.gmSupport?await GM_setValue(t,e):new Promise((o=>{o(this.syncSet(t,e))}))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):new Promise((e=>{e(this.syncDelete(t))}))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","udemyData","audioProxy","showPiPButton","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():new Promise((t=>{t(this.syncList())}))}}},"./src/utils/utils.js":(t,e,o)=>{"use strict";o.d(e,{KQ:()=>a,PG:()=>l,QZ:()=>u,_v:()=>r,eL:()=>d,gJ:()=>s,qq:()=>c});var n=o("./src/localization/localizationProvider.js");const i=navigator.language||navigator.userLanguage,a=i?.substr(0,2)?.toLowerCase()??"en";String.prototype.format||(String.prototype.format=function(){var t=arguments;return this.replace(/{(\d+)}/g,(function(e,o){return void 0!==t[o]?t[o]:e}))});const r=t=>new Promise((e=>setTimeout(e,t))),s=(t,e)=>{const o=new URL(window.location.href);switch(t){case"piped":case"invidious":case"youtube":return o.pathname.match(/(?:watch|embed|shorts)\/([^/]+)/)?.[1]||o.searchParams.get("v");case"vk":return o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)?o.pathname.match(/^\/video-?[0-9]{8,9}_[0-9]{9}$/)[0].slice(1):o.searchParams.get("z")?o.searchParams.get("z").split("/")[0]:!(!o.searchParams.get("oid")||!o.searchParams.get("id"))&&`video-${Math.abs(o.searchParams.get("oid"))}_${o.searchParams.get("id")}`;case"nine_gag":case"9gag":case"gag":return o.pathname.match(/gag\/([^/]+)/)?.[1];case"twitch":if(/^m\.twitch\.tv$/.test(window.location.hostname)){const t=document.head.querySelector('link[rel="canonical"]');return t?.href.match(/videos\/([^/]+)/)?.[0]||o.pathname.slice(1)}if(/^player\.twitch\.tv$/.test(window.location.hostname))return`videos/${o.searchParams.get("video")}`;if(/^clips\.twitch\.tv$/.test(window.location.hostname)){const t=document.querySelector(".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']");return!!t&&`${t.href.replace("https://www.twitch.tv/","")}/clip/${o.searchParams.get("clip")}`}return o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)?o.pathname.match(/([^/]+)\/(?:clip)\/([^/]+)/)[0]:o.pathname.match(/(?:videos)\/([^/]+)/)?.[0];case"proxytok":return o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];case"tiktok":{let t=o.pathname.match(/([^/]+)\/video\/([^/]+)/)?.[0];if(!t){const o=e.closest(".xgplayer-playing, .tiktok-web-player"),n=o?.closest('div[data-e2e="recommend-list-item-container"]'),i=n?.querySelector('a[data-e2e="video-author-avatar"]');if(o&&i){const e=o.id?.match(/^xgwrapper-[0-9]+-(.*)$/)?.at(1),n=i.href?.match(/.*(@.*)$/)?.at(1);e&&n&&(t=`${n}/video/${e}`)}}return t}case"vimeo":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0]||o.pathname.match(/[^/]+$/)?.[0];case"xvideos":return o.pathname.match(/[^/]+\/[^/]+$/)?.[0];case"pornhub":return o.searchParams.get("viewkey")||o.pathname.match(/embed\/([^/]+)/)?.[1];case"twitter":return o.pathname.match(/status\/([^/]+)/)?.[1];case"udemy":case"rumble":return o.pathname;case"facebook":return!!o.searchParams.get("v")&&o.searchParams.get("v");case"rutube":return o.pathname.match(/(?:video|embed)\/([^/]+)/)?.[1];case"coub":return o.pathname.includes("/view")?o.pathname.match(/view\/([^/]+)/)?.[1]:o.pathname.includes("/embed")?o.pathname.match(/embed\/([^/]+)/)?.[1]:document.querySelector(".coub.active")?.dataset?.permalink;case"bilibili":{const t=o.searchParams.get("bvid");if(t)return t;{let t=o.pathname.match(/video\/([^/]+)/)?.[1];return t&&o.search&&null!==o.searchParams.get("p")&&(t+=`/?p=${o.searchParams.get("p")}`),t}}case"mail_ru":if(o.pathname.startsWith("/v/")||o.pathname.startsWith("/mail/"))return o.pathname;if(o.pathname.match(/video\/embed\/([^/]+)/)){const t=document.querySelector(".b-video-controls__mymail-link");return!!t&&t?.href.split("my.mail.ru")?.[1]}return!1;case"bitchute":return o.pathname.match(/video\/([^/]+)/)?.[1];case"coursera":return o.pathname.match(/learn\/([^/]+)\/lecture\/([^/]+)/)?.[0];case"eporner":return o.pathname.match(/video-([^/]+)\/([^/]+)/)?.[0];case"peertube":return o.pathname.match(/\/w\/([^/]+)/)?.[0];case"dailymotion":{const t=Array.from(document.scripts).filter((t=>t.innerText.trim().includes("window.__PLAYER_CONFIG__ = {")));if(!t.length)return!1;try{let e=t[0].innerText.trim().replace("window.__PLAYER_CONFIG__ = ","");e.endsWith("};")&&(e=e.substring(0,e.length-1));const o=JSON.parse(e),n=o.context.embedder??o.context.http_referer;return console.log(n,o),n.match(/\/video\/([^/]+)/)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case"trovo":{if(!o.pathname.startsWith("/s/"))return!1;const t=o.searchParams.get("vid");if(!t)return!1;const e=o.pathname.match(/([^/]+)\/([\d]+)/)?.[0];return!!e&&`${e}?vid=${t}`}case"yandexdisk":return o.pathname.match(/\/[i|s|d]\/([^/]+)/)?.[1];default:return!1}};function l(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?n.V.get("translationTakeMoreThanHour"):e>=10&&e%10?n.V.get("translationTakeApproximatelyMinutes").format(e):1==e||0==e&&o>0?n.V.get("translationTakeAboutMinute"):n.V.get("translationTakeApproximatelyMinute").format(e)}function d(t){return t.toLowerCase().split(";")[0].trim().split("-")[0].split("_")[0]}function c(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function u(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}},"./src/yandexRequest.js":(t,e,o)=>{"use strict";o.r(e),o.d(e,{default:()=>a});var n=o("./src/config/config.js"),i=o("./src/utils/debug.js");const a=async function(t,e,o,a){try{i.Z.log("yandexRequest:",t);const r={url:`https://${n.iF}${t}`,method:"POST",headers:{Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf","User-Agent":n.Rr,Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors","sec-ch-ua":null,"sec-ch-ua-mobile":null,"sec-ch-ua-platform":null,...o},binary:!0,data:new Blob([e]),responseType:"arraybuffer"};GM_xmlhttpRequest({...r,onload:t=>{i.Z.log("yandexRequest:",t.status,t),a(200===t.status,t.response)},onerror:t=>{console.error("[VOT]",t),a(!1)}})}catch(t){console.error("[VOT]",t),a(!1)}}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={id:n,exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nc=void 0,(()=>{"use strict";var t=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),e=o.n(t),n=o("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),i=o.n(n),a=o("./node_modules/style-loader/dist/runtime/insertBySelector.js"),r=o.n(a),s=o("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),l=o.n(s),d=o("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),c=o.n(d),u=o("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),h=o.n(u),p=o("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/main.scss"),g={};g.styleTagTransform=h(),g.setAttributes=l(),g.insert=r().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=c(),e()(p.Z,g),p.Z&&p.Z.locals&&p.Z.locals;var v=o("./src/localization/localizationProvider.js");class m extends Error{constructor(t){super(v.V.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=v.V.get(t)}}var b=o("./src/utils/debug.js");const f=["ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],y=["kk","bn","pt","cs","hi","mr","te","tr","ms","vi","ta","jv","ur","fa","gu","id","uk","da","fi","uz","pl","sv","az","sq","am","hy","af","eu","my","bg","bs","cy","hu","gl","el","zu","kn","ca","km","lo","mk","ml","mt","mn","ne","nl","pa","ro","sr","si","sk","sl","sw","su","hr","et"],w=["ru","en","kk"],x=["Violentmonkey","FireMonkey","Greasemonkey","AdGuard","OrangeMonkey"];var S=o("./src/utils/utils.js"),k=o("./src/config/config.js"),T=o("./src/utils/storage.js");async function V(t,e){const o=new AbortController,n=setTimeout((()=>o.abort()),3e3);try{return await fetch(t,{...e,signal:o.signal})}catch(t){return console.error("Fetch timed-out. Error:",t),t}finally{clearTimeout(n)}}const M={async translate(t,e){try{const o=await V(k.rm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t,e){try{const o=await V(k.jm.yandex,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,lang:e})});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.lang??"en"}catch(t){return console.error("Error translating text:",t),"en"}}},L={async detect(t){try{const e=await fetch(k.jm.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}};async function O(t,e="",o="ru"){if("yandex"===await T.i.get("translationService",k.kF)){const n=e&&o?`${e}-${o}`:o;return await M.translate(t,n)}return t}const P=["yandex"],E=["yandex","rust-server"];function C(){return/^m\.youtube\.com$/.test(window.location.hostname)}function A(){return window.location.pathname.startsWith("/shorts/")?C()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function B(){const t=A();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function _(){const t=A();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const F=function(){const t=A();return t?.getVolume?t.getVolume.call()/100:1},q=function(){const t=B();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?(0,S.eL)(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),b.Z.log("youtube subtitles:",e),e},R=async function(){const t=A(),e=B(),o=_(),{author:n,title:i}=o??{},{shortDescription:a,isLive:r,isLiveContent:s,isUpcoming:l}=e?.videoDetails??{},d=!(!r&&!l||s);let c=await async function(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return(0,S.eL)(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return(0,S.eL)(t.languageCode)}if(!n||!o)return"en";const a=[/https?:\/\/\S+/g,/Auto-generated by YouTube/g,/Provided to YouTube by/g,/Released on/g],r=[n.split("\n").filter((t=>!a.some((e=>e.test(t))))).join("\n").replace(/[^\p{L}\s]/gu," ").trim().replace(/\s+/g," ").slice(0,250),o].join(" ");return await async function(t){switch(await T.i.get("detectService",k.EY)){case"yandex":return await M.detect(t);case"rust-server":return await L.detect(t);default:return"en"}}(r)}(t,e,i,a);f.includes(c)||(c="en");const u={isLive:!!r,isPremiere:d,title:i,description:a,author:n,detectedLanguage:c};return b.Z.log("youtube video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},z=function(t){const e=A();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},D=function(t,e){b.Z.log("videoSeek",e);const o=(A()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},I=new protobuf.Type("VideoTranslationHelpObject").add(new protobuf.Field("target",1,"string")).add(new protobuf.Field("targetUrl",2,"string")),j=new protobuf.Type("VideoTranslationRequest").add(new protobuf.Field("url",3,"string")).add(new protobuf.Field("deviceId",4,"string")).add(new protobuf.Field("firstRequest",5,"bool")).add(new protobuf.Field("duration",6,"double")).add(new protobuf.Field("unknown2",7,"int32")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("unknown3",9,"int32")).add(new protobuf.Field("unknown4",10,"int32")).add(new protobuf.Field("translationHelp",11,"VideoTranslationHelpObject","repeated")).add(new protobuf.Field("responseLanguage",14,"string")).add(new protobuf.Field("unknown5",15,"int32")),N=new protobuf.Type("VideoSubtitlesRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")),H=new protobuf.Type("VideoStreamRequest").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("language",2,"string")).add(new protobuf.Field("responseLanguage",3,"string")),$=new protobuf.Type("VideoStreamPingRequest").add(new protobuf.Field("pingId",1,"int32")),Z=new protobuf.Type("VideoTranslationResponse").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("duration",2,"double")).add(new protobuf.Field("status",4,"int32")).add(new protobuf.Field("remainingTime",5,"int32")).add(new protobuf.Field("unknown0",6,"int32")).add(new protobuf.Field("unknown1",7,"string")).add(new protobuf.Field("language",8,"string")).add(new protobuf.Field("message",9,"string")),U=new protobuf.Type("VideoSubtitlesObject").add(new protobuf.Field("language",1,"string")).add(new protobuf.Field("url",2,"string")).add(new protobuf.Field("unknown2",3,"int32")).add(new protobuf.Field("translatedLanguage",4,"string")).add(new protobuf.Field("translatedUrl",5,"string")).add(new protobuf.Field("unknown5",6,"int32")).add(new protobuf.Field("unknown6",7,"int32")),W=new protobuf.Type("VideoSubtitlesResponse").add(new protobuf.Field("unknown0",1,"int32")).add(new protobuf.Field("subtitles",2,"VideoSubtitlesObject","repeated")),G=new protobuf.Type("VideoStreamObject").add(new protobuf.Field("url",1,"string")).add(new protobuf.Field("timestamp",2,"int64")),Y=new protobuf.Type("VideoStreamResponse").add(new protobuf.Field("interval",1,"int32")).add(new protobuf.Field("translatedInfo",2,"VideoStreamObject")).add(new protobuf.Field("pingId",3,"int32")),K=(new protobuf.Root).define("yandex").add(I).add(j).add(Z).add(N).add(U).add(W).add($).add(H).add(G).add(Y),Q=(t,e,o,n,i)=>K.VideoTranslationRequest.encode({url:t,firstRequest:!0,duration:e,unknown2:1,language:o,unknown3:0,unknown4:0,translationHelp:i,responseLanguage:n,unknown5:0}).finish(),J=t=>K.VideoTranslationResponse.decode(new Uint8Array(t)),X=(t,e)=>K.VideoSubtitlesRequest.encode({url:t,language:e}).finish(),tt=t=>K.VideoSubtitlesResponse.decode(new Uint8Array(t)),et=t=>K.VideoStreamPingRequest.encode({pingId:t}).finish(),ot=(t,e,o)=>K.VideoStreamRequest.encode({url:t,language:e,responseLanguage:o}).finish(),nt=t=>K.VideoStreamResponse.decode(new Uint8Array(t)),it=["invidious.snopyta.org","yewtu.be","invidious.kavin.rocks","vid.puffyan.us","invidious.namazso.eu","inv.riverside.rocks","yt.artemislena.eu","invidious.flokinet.to","invidious.esmailelbob.xyz","y.com.sb","invidious.nerdvpn.de","inv.vern.cc","invidious.slipfox.xyz","invidio.xamh.de","invidious.dhusch.de"],at=["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"];function rt(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),e.innerHTML=t,e}function st(t){const e=parseFloat(t.value),o=""===t.min?0:parseFloat(t.min),n=(e-o)/((""===t.max?100:parseFloat(t.max))-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function lt(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),{container:i,input:a,label:r}}function dt(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=rt('');d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const c=document.createElement("vot-block");return c.classList.add("vot-dialog-title"),c.innerHTML=t,e.appendChild(o),e.appendChild(n),n.appendChild(i),i.appendChild(a),i.appendChild(r),i.appendChild(s),a.appendChild(l),a.appendChild(d),l.appendChild(c),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:c}}function ct(t,e,o,n={}){const i=n.onSelectCb||function(){},a=n.labelElement||"";let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.appendChild(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.innerText=t,void 0===t&&(d.innerText=o.find((t=>!0===t.selected))?.label);const c=document.createElement("vot-block");return c.classList.add("vot-select-arrow-icon"),c.innerHTML='',l.append(d,c),l.onclick=()=>{const t=dt(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.innerText=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{a.target.inert||(n.childNodes.forEach((t=>t.dataset.votSelected=!1)),o.forEach((e=>e.selected=e.value===t.value)),e.dataset.votSelected=!0,d.innerText=t.label,await i(a))},n.appendChild(e)}const a=lt(v.V.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();Array.from(r).forEach((t=>t.hidden=!t.innerText.toLowerCase().includes(e)))},t.bodyContainer.append(a.container,n),r=n.childNodes,t.backdrop.onclick=t.closeButton.onclick=()=>{t.container.remove(),r=[]}},s.append(l),{container:s,title:d,arrowIcon:c,labelElement:a,setTitle:t=>{d.innerText=t},setSelected:t=>{Array.from(r).filter((t=>!t.inert)).forEach((e=>e.dataset.votSelected=e.dataset.votValue===t)),o.forEach((e=>e.selected=String(e.value)===t))},updateItems:t=>{o=t}}}const ut={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.innerHTML=t,o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.innerHTML=t;const i=document.createElement("vot-block");return i.innerHTML=e,o.appendChild(n),o.appendChild(i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.innerHTML=t,e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.innerHTML=t,e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.innerHTML=t,e},createIconButton:rt,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.innerHTML=t,o.appendChild(n),o.appendChild(i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return r.innerHTML=t,i.appendChild(a),i.appendChild(r),a.addEventListener("input",(t=>st(t.target))),st(a),{container:i,input:a,label:r}},createTextfield:lt,createDialog:dt,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),o.innerHTML='';const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),i.innerHTML='';const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),r.innerHTML='';const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.innerHTML=t,e.appendChild(o),e.appendChild(n),e.appendChild(i),e.appendChild(a),e.appendChild(r),o.appendChild(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.innerHTML=t,e.appendChild(o),o.appendChild(n),o.appendChild(i),o.appendChild(a),n.appendChild(r),r.appendChild(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.innerText=t,e},createVOTSelect:ct,createVOTLanguageSelect:function(t){const e=t.fromTitle||"#UNDEFINED",o=t.fromDialogTitle||"#UNDEFINED",n=t.fromItems||[],i=t.fromOnSelectCB||function(){},a=t.toTitle||"#UNDEFINED",r=t.toDialogTitle||"#UNDEFINED",s=t.toItems||[],l=t.toOnSelectCB||function(){},d=document.createElement("vot-block");d.classList.add("vot-lang-select");const c=ct(e,o,n,{onSelectCb:i}),u=document.createElement("vot-block");u.classList.add("vot-lang-select-icon"),u.innerHTML='';const h=ct(a,r,s,{onSelectCb:l});return d.append(c.container,u,h.container),{container:d,fromSelect:c,icon:u,toSelect:h}},updateSlider:st};function ht(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}var pt=o("./node_modules/bowser/es5.js");function gt(t){const e=([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(t=>(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)));return t?e:e.toUpperCase()}async function vt(t){const e=new TextEncoder("utf-8"),o=await window.crypto.subtle.importKey("raw",e.encode(k.I1),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),n=await window.crypto.subtle.sign("HMAC",o,t);return Array.from(new Uint8Array(n),(t=>t.toString(16).padStart(2,"0"))).join("")}function mt(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1],r=o[o.length-1],s=r?.alignRange?.end??0,l=s+n.text.length;if(o.push(Object.assign(Object.assign({},n),{alignRange:{start:s,end:l}})),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function bt(t,e){const o=t.text.split(new RegExp("([\n \t])")).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a,l=r?i-s:n;return Object.assign(Object.assign({},e),{startMs:s,durationMs:l})}))}class ft{dragging=!1;subtitlesContainerRect=null;containerRect=null;offsetX=null;offsetY=null;lastContent=null;highlightWords=!1;subtitles=null;maxLength=300;maxLengthRegexp=/.{1,300}(?:\s|$)/g;constructor(t,e,o){this.site=o,this.video=t,"youtube"===this.site.host&&"mobile"!==this.site.additionalData?this.container=e.parentElement:this.container=e,this.votSubtitlesContainer=document.createElement("vot-block"),this.votSubtitlesContainer.classList.add("vot-subtitles-widget"),this.container.appendChild(this.votSubtitlesContainer),this.onMouseDownBound=this.onMouseDown.bind(this),this.onMouseUpBound=this.onMouseUp.bind(this),this.onMouseMoveBound=this.onMouseMove.bind(this),this.onTimeUpdateBound=this.onTimeUpdate.bind(this),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound)}release(){this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.votSubtitlesContainer.remove()}onMouseDown(t){this.votSubtitlesContainer.contains(t.target)&&(this.subtitlesContainerRect=this.votSubtitlesContainer.getBoundingClientRect(),this.containerRect=this.container.getBoundingClientRect(),this.offsetX=t.clientX-this.subtitlesContainerRect.x,this.offsetY=t.clientY-this.subtitlesContainerRect.y,this.dragging=!0)}onMouseUp(){this.dragging=!1}onMouseMove(t){if(this.dragging){t.preventDefault();const e=t.clientX-this.offsetX,o=t.clientY-this.offsetY,n=o>=this.containerRect.top,i=o+this.subtitlesContainerRect.height<=this.containerRect.bottom,a=e>=this.containerRect.left,r=e+this.subtitlesContainerRect.width<=this.containerRect.right;this.votSubtitlesContainer.style.top=n&&i?o-this.containerRect.y+"px":n?this.containerRect.height-this.subtitlesContainerRect.height+"px":"0px",this.votSubtitlesContainer.style.left=a&&r?e-this.containerRect.x+"px":a?this.containerRect.width-this.subtitlesContainerRect.width+"px":"0px"}}onTimeUpdate(){this.update()}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,this.votSubtitlesContainer.innerHTML="")}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords!==!!t&&(this.highlightWords=!!t,this.update())}update(){if(!this.video)return;let t="",e=this.highlightWords&&this.subtitles?.containsTokens;const o=1e3*this.video.currentTime,n=this.subtitles?.subtitles?.findLast((t=>t.startMsthis.maxLength){let t=[],n=0,i=0,a=0;for(let o=0;othis.maxLength){let r=e.slice(n,i+1);r.at(0)&&" "===r.at(0).text&&(r=r.slice(1)),r.at(-1)&&" "===r.at(-1).text&&(r=r.slice(0,r.length-1)),t.push({startMs:e[n].startMs,durationMs:e[i].startMs+e[i].durationMs-e[n].startMs,tokens:r}),n=o,a=0}i=o}for(let n=0;ne||o>n.startMs-100&&e-o<275?'class="passed"':""}>${n.text}`}}else if(n.text.length>this.maxLength){let e=n.text.match(this.maxLengthRegexp),i=n.durationMs/e.length;for(let a=0;a${t.replace("\\n","
")}`:"")}}function yt(){return wt()?.player}function wt(){return document.querySelector(".vjs-v6")}const xt=async function(t="en"){let e=null;const o=yt(),{duration:n}=o?.cache_||{},{courseId:i,tracks:a,sources:r}=o?.options_||{},s=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(r),l=await async function(t){const e=await fetch(`https://www.coursera.org/api/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}(i);let d=l?.primaryLanguageCodes?.[0];d=d?(0,S.eL)(d):"en",f.includes(d)||(d="en");const c=function(t,e,o){let n=t?.find((t=>(0,S.eL)(t.srclang)===e));return n||(n=t?.find((t=>(0,S.eL)(t.srclang)===o))||t?.[0]),n?.src}(a,d,t);console.log(`videoURL: ${s}, subtitlesURL: ${c}`),c&&s?e=[{target:"video_file_url",targetUrl:s},{target:"subtitles_file_url",targetUrl:`https://www.coursera.org${c}`}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${s}, subtitlesURL: ${c}`);const u={duration:n,detectedLanguage:d,translationHelp:e};return b.Z.log("coursera video data:",u),console.log("[VOT] Detected language: ",u.detectedLanguage),u},St="https://www.udemy.com/api-2.0";async function kt(t){const e=await fetch(`${St}/courses/${t}/?`+new URLSearchParams({"fields[course]":"locale",use_remote_version:"true",caching_intent:"true"}));return await e.json()}async function Tt(t,e,o){if(!(t.expires+2592e6>(new Date).getTime()&&t.accessToken))return void console.error(v.V.get("udemyAccessTokenExpired"));const n=`Bearer ${t.accessToken}`,i=await fetch(`${St}/users/me/subscribed-courses/${e}/lectures/${o}/?`+new URLSearchParams({"fields[lecture]":"asset","fields[asset]":"length,media_sources,captions"}),{headers:{"x-udemy-authorization":n,authorization:n}});return await i.json()}function Vt(){return Lt()?.player}function Mt(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(v.V.get("udemyModuleArgsNotFound")),{})}function Lt(){return document.querySelector(".vjs-v7")}const Ot=async function(t,e="en"){let o=null;const n=Vt();b.Z.log("udemyData",t);const i=Mt();b.Z.log("moduleData: ",i);const a=i.courseId,r=window.location.pathname.match(/learn\/lecture\/([^/]+)/)?.[1];b.Z.log(`CourseId: ${a}, lectureId: ${r}`);const s=await kt(a);b.Z.log("courseLang Data:",s);const l=await Tt(t,a,r);console.log("lecture Data:",l);let d=s?.locale?.locale;d=d?(0,S.eL)(d):"en",f.includes(d)||(d="en");const c=l?.asset?.length||n?.cache_?.duration,u=function(t){const e=t?.find((t=>"video/webm"===t.type||"video/mp4"===t.type));return e?.src}(l?.asset?.media_sources)||function(){const t=Lt()?.querySelector("video")?.src;return!t?.startsWith("blob:")&&t}(),h=function(t,e,o){let n=t?.find((t=>(0,S.eL)(t.locale_id)===e));return n||(n=t?.find((t=>(0,S.eL)(t.locale_id)===o))||t?.[0]),n?.url}(l?.asset?.captions,d,e);console.log(`videoURL: ${u}, subtitlesURL: ${h}`),h&&u?o=[{target:"video_file_url",targetUrl:u},{target:"subtitles_file_url",targetUrl:h}]:console.error(`Failed to find subtitlesURL or videoURL. videoURL: ${u}, subtitlesURL: ${h}`);const p={duration:c,detectedLanguage:d,translationHelp:o};return b.Z.log("udemy video data:",p),console.log("[VOT] Detected language: ",p.detectedLanguage),p};o("./node_modules/requestidlecallback-polyfill/index.js");class Pt{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}function Et(t){return Array.from(t).map((t=>{const e=[];return t instanceof HTMLVideoElement&&e.push(t),t instanceof HTMLElement&&e.push(...Array.from(t.querySelectorAll("video"))),t?.shadowRoot?.querySelectorAll&&e.push(...Array.from(t.shadowRoot.querySelectorAll("video"))),e})).flat()}const Ct=[{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:"youtube",url:"https://youtu.be/",match:/^m.youtube(-nocookie)?.com$/,selector:".player-container"},{host:"youtube",url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:"tiktok",url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:"proxytok",url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tik.hostux.net","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{additionalData:"mobile",host:"twitch",url:"https://twitch.tv/",match:/^m.twitch.tv$/,selector:"main > div > section > div > div > div"},{host:"twitch",url:"https://twitch.tv/",match:t=>t.host.includes("clips.twitch.tv")||t.host.includes("player.twitch.tv")&&null===t.searchParams.get("channel")||t.host.includes("twitch.tv")&&(t.pathname.startsWith("/videos")||t.pathname.startsWith("/embed")||t.pathname.includes("/clip")),selector:".video-ref"},{host:"xvideos",url:"https://www.xvideos.com/",match:/^www.xvideos.com$/,selector:".video-bg-pic"},{host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:"pornhub",url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{additionalData:"mobile",host:"vk",url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{host:"vk",url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:"vimeo",url:"https://vimeo.com/",match:/^(player.)?vimeo.com$/,selector:".player"},{host:"nine_gag",url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:"coub",url:"https://coub.com/view/",match:/^coub.com$/,selector:".viewer__player"},{host:"bitchute",url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".plyr__video-wrapper"},{host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:"rutube",url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap"},{additionalData:"old",host:"bilibili",url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:"twitter",url:"https://twitter.com/i/status/",match:/^twitter.com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:"mail_ru",url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:"coursera",url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6"},{host:"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)'},{host:"invidious",url:"https://youtu.be/",match:it,selector:"#player"},{host:"piped",url:"https://youtu.be/",match:at,selector:".shaka-video-container"},{host:"rumble",url:"https://rumble.com",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:"eporner",url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:"peertube",url:"tube.shanti.cafe",match:["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"],selector:".vjs-v7"},{host:"dailymotion",url:"https://www.dailymotion.com/video/",match:/^geo.dailymotion.com$/,selector:".player"},{host:"trovo",url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:"yandexdisk",url:"https://disk.yandex.ru/i/",match:/^disk.yandex.ru$/,selector:"yaplayertag > div:nth-of-type(1)"}],At=pt.getParser(window.navigator.userAgent).getResult(),Bt=[...it,...at],_t=["playing","ratechange","play","waiting","pause"];function Ft(t,e,o=!1){return t.map((t=>({label:`${o&&!w.includes(t)?"❌ ":""}${v.V.get("langs")[t]??t.toUpperCase()}`,value:t,selected:e===t})))}class qt{translateFromLang="en";translateToLang=S.KQ;timer;ytData="";videoData="";firstPlay=!0;audio=new Audio;hls=(0,S.QZ)();downloadTranslationUrl=null;downloadSubtitlesUrl=null;autoRetry;streamPing;volumeOnStart;tempOriginalVolume;tempVolume;subtitlesList=[];subtitlesListVideoId=null;videoLastSrcObject=null;constructor(t,e,o){b.Z.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.handleSrcChangedBound=this.handleSrcChanged.bind(this),this.srcObserver=new MutationObserver(this.handleSrcChangedBound),this.srcObserver.observe(this.video,{attributeFilter:["src","currentSrc"]}),this.srcObjectInterval=setInterval((async()=>{this.videoLastSrcObject!==this.video.srcObject&&(this.videoLastSrcObject=this.video.srcObject,await this.handleSrcChanged())}),100),this.stopTranslationBound=this.stopTranslation.bind(this),this.handleVideoEventBound=this.handleVideoEvent.bind(this),this.changeOpacityOnEventBound=this.changeOpacityOnEvent.bind(this),this.resetTimerBound=this.resetTimer.bind(this),this.init()}async init(){if(this.initialized)return;this.data={autoTranslate:await T.i.get("autoTranslate",0,!0),dontTranslateLanguage:await T.i.get("dontTranslateLanguage",S.KQ),dontTranslateYourLang:await T.i.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:await T.i.get("autoSetVolumeYandexStyle",1,!0),autoVolume:await T.i.get("autoVolume",k.sN,!0)/100,showVideoSlider:await T.i.get("showVideoSlider",1,!0),syncVolume:await T.i.get("syncVolume",0,!0),subtitlesMaxLength:await T.i.get("subtitlesMaxLength",300,!0),highlightWords:await T.i.get("highlightWords",0,!0),responseLanguage:await T.i.get("responseLanguage",S.KQ),defaultVolume:await T.i.get("defaultVolume",100,!0),udemyData:await T.i.get("udemyData",{accessToken:"",expires:0}),audioProxy:await T.i.get("audioProxy",(S.KQ,0),!0),showPiPButton:await T.i.get("showPiPButton",0,!0),translateAPIErrors:await T.i.get("translateAPIErrors",1,!0),translationService:await T.i.get("translationService",k.kF),detectService:await T.i.get("detectService",k.EY),m3u8ProxyHost:await T.i.get("m3u8ProxyHost",k.e6),proxyWorkerHost:await T.i.get("proxyWorkerHost",k.ez)},this.videoData=await this.getVideoData(),console.log("[db] data from db: ",this.data),this.subtitlesWidget=new ft(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.initUI(),this.initUIEvents();const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t,this.votButton.label.innerHTML=e}initUI(){this.votButton=ut.createVOTButton(v.V.get("translateVideo")),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!(0,S.qq)()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!(0,S.qq)()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=ut.createVOTMenu(v.V.get("VOTSettings")),this.container.appendChild(this.votMenu.container),this.votDownloadButton=ut.createIconButton(''),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=ut.createIconButton(''),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=ut.createIconButton(''),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=ut.createVOTLanguageSelect({fromTitle:v.V.get("langs")[this.video.detectedLanguage],fromDialogTitle:v.V.get("videoLanguage"),fromItems:[{label:v.V.get("langs").auto,value:"auto",selected:""},...Ft(f,this.videoData.detectedLanguage)],fromOnSelectCB:async t=>{b.Z.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:v.V.get("langs")[this.video.responseLanguage],toDialogTitle:v.V.get("translationLanguage"),toItems:[...Ft(f,this.videoData.responseLanguage,!0),{label:"─────────",value:"separator",disabled:!0},...Ft(y,this.videoData.responseLanguage,!0)],toOnSelectCB:async t=>{const e=t.target.dataset.votValue;b.Z.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await T.i.set("responseLanguage",this.data.responseLanguage),b.Z.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=ut.createVOTSelect(v.V.get("VOTSubtitlesDisabled"),v.V.get("VOTSubtitles"),[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=ut.createSlider(`${v.V.get("VOTVolume")}: ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=ut.createSlider(`${v.V.get("VOTVolumeTranslation")}: ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=ut.createDialog(v.V.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=ut.createHeader(v.V.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=ut.createCheckbox(v.V.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=ut.createVOTSelect(v.V.get("langs")[T.i.syncGet("dontTranslateLanguage",S.KQ)],v.V.get("VOTDontTranslateYourLang"),Ft(f,T.i.syncGet("dontTranslateLanguage",S.KQ)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await T.i.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:ut.createCheckbox(v.V.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.votAutoSetVolumeCheckbox=ut.createCheckbox(`${v.V.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=ut.createSlider(`${100*(this.data?.autoVolume??k.sN)}%`,100*(this.data?.autoVolume??k.sN),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=ut.createCheckbox(v.V.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votUdemyDataTextfield=ut.createTextfield(v.V.get("VOTUdemyData"),this.data?.udemyData?.accessToken??""),this.votUdemyDataTextfield.container.hidden="udemy"!==this.site.host,this.votSettingsDialog.bodyContainer.appendChild(this.votUdemyDataTextfield.container),this.votSyncVolumeCheckbox=ut.createCheckbox(v.V.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSyncVolumeCheckbox.container.hidden="youtube"!==this.site.host||"mobile"===this.site.additionalData,this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=ut.createVOTSelect(T.i.syncGet("translationService",k.kF),v.V.get("VOTTranslationService"),Ft(P,T.i.syncGet("translationService",k.kF)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await T.i.set("translationService",this.data.translationService)},labelElement:ut.createCheckbox(v.V.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===v.V.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=ut.createVOTSelect(T.i.syncGet("detectService",k.EY),v.V.get("VOTDetectService"),Ft(E,T.i.syncGet("detectService",k.EY)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await T.i.set("detectService",this.data.detectService)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=ut.createHeader(v.V.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesMaxLengthSlider=ut.createSlider(`${v.V.get("VOTSubtitlesMaxLength")}: ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesHighlightWordsCheckbox=ut.createCheckbox(v.V.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votProxyHeader=ut.createHeader(v.V.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=ut.createTextfield(v.V.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,k.e6),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=ut.createTextfield(v.V.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,k.ez),this.votProxyWorkerHostTextfield.container.hidden=!0,this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=ut.createCheckbox(v.V.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votAudioProxyCheckbox.container.hidden=!0,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=ut.createHeader(v.V.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=ut.createVOTSelect(v.V.get("langs")[T.i.syncGet("locale-lang-override","auto")],v.V.get("VOTMenuLanguage"),Ft(v.Z,T.i.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await T.i.set("locale-lang-override",t.target.dataset.votValue)},labelElement:ut.createVOTSelectLabel(v.V.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=ut.createCheckbox(v.V.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!(0,S.qq)(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=ut.createInformation(`${v.V.get("VOTVersion")}:`,GM_info.script.version),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=ut.createInformation(`${v.V.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=ut.createInformation(`${v.V.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=ut.createInformation(`${v.V.get("VOTBrowser")}:`,`${At.browser.name} ${At.browser.version} (${At.os.name} ${At.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=ut.createButton(v.V.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{if(this.audio.src)return b.Z.log("[click translationBtn] audio.src is not empty"),void this.stopTraslate();try{b.Z.log("[click translationBtn] trying execute translation");const t=(0,S.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");await this.translateExecutor(t)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}})),this.votButton.pipButton.addEventListener("click",(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(()=>{console.log(this.downloadSubtitlesUrl),this.downloadSubtitlesUrl&&window.open(this.downloadSubtitlesUrl,"_blank").focus()})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(void 0===document.fullscreen||document.fullscreen)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.mozCancelFullscreen&&document.mozCancelFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);if(this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`,this.setVideoVolume(e/100),1===this.data.syncVolume){const t=Number(this.votVideoTranslationVolumeSlider.input.value),o=ht(this.audio,e,t,this.tempOriginalVolume);this.votVideoTranslationVolumeSlider.input.value=o,this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ut.updateSlider(this.votVideoTranslationVolumeSlider.input),this.tempVolume=o,this.tempOriginalVolume=e}})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(async t=>{this.data.defaultVolume=Number(t.target.value),await T.i.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").innerHTML=`${this.data.defaultVolume}%`,this.audio.volume=this.data.defaultVolume/100,1===this.data.syncVolume&&this.syncTranslationWithVideo(this.data.defaultVolume)})),this.votAutoTranslateCheckbox.input.addEventListener("change",(async t=>{this.data.autoTranslate=Number(t.target.checked),await T.i.set("autoTranslate",this.data.autoTranslate),b.Z.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(async t=>{this.data.dontTranslateYourLang=Number(t.target.checked),await T.i.set("dontTranslateYourLang",this.data.dontTranslateYourLang),b.Z.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await T.i.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),b.Z.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})),this.votAutoSetVolumeSlider.input.addEventListener("input",(async t=>{const e=Number(t.target.value);this.data.autoVolume=e/100,await T.i.set("autoVolume",e),this.votAutoSetVolumeSlider.label.querySelector("strong").innerHTML=`${e}%`})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(async t=>{this.data.showVideoSlider=Number(t.target.checked),await T.i.set("showVideoSlider",this.data.showVideoSlider),b.Z.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})),this.votUdemyDataTextfield.input.addEventListener("change",(async t=>{this.data.udemyData={accessToken:t.target.value,expires:(new Date).getTime()},await T.i.set("udemyData",this.data.udemyData),b.Z.log("udemyData value changed. New value: ",this.data.udemyData),window.location.reload()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(async t=>{this.data.syncVolume=Number(t.target.checked),await T.i.set("syncVolume",this.data.syncVolume),b.Z.log("syncVolume value changed. New value: ",this.data.syncVolume)})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(async t=>{this.data.translateAPIErrors=Number(t.target.checked),await T.i.set("translateAPIErrors",this.data.translateAPIErrors),b.Z.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(async t=>{this.data.subtitlesMaxLength=Number(t.target.value),await T.i.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").innerHTML=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(async t=>{this.data.highlightWords=Number(t.target.checked),await T.i.set("highlightWords",this.data.highlightWords),b.Z.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(async t=>{this.data.showPiPButton=Number(t.target.checked),await T.i.set("showPiPButton",this.data.showPiPButton),b.Z.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!(0,S.qq)()||!this.data.showPiPButton,this.votButton.separator2.hidden=!(0,S.qq)()||!this.data.showPiPButton})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(async t=>{this.data.m3u8ProxyHost=t.target.value||k.e6,await T.i.set("m3u8ProxyHost",this.data.m3u8ProxyHost),b.Z.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(async t=>{this.data.proxyWorkerHost=t.target.value||k.ez,await T.i.set("proxyWorkerHost",this.data.proxyWorkerHost),b.Z.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),window.location.reload()})),this.votAudioProxyCheckbox.input.addEventListener("change",(async t=>{this.data.audioProxy=Number(t.target.checked),await T.i.set("audioProxy",this.data.audioProxy),b.Z.log("audioProxy value changed. New value: ",this.data.audioProxy)})),this.votResetSettingsButton.addEventListener("click",(async()=>{v.V.reset(),(await T.i.list()).filter((t=>!v.V.gmValues.includes(t))).forEach((t=>T.i.syncDelete(t))),window.location.reload()}))}releaseExtraEvents(){clearInterval(this.resizeInterval),this.resizeObserver?.disconnect(),"youtube"===this.site.host&&"mobile"!==this.site.additionalData&&this.syncVolumeObserver?.disconnect(),this.extraEvents?.forEach((t=>{t.element.removeEventListener(t.event,t.handler)}))}initExtraEvents(){this.extraEvents=[];const t=(t,e,o)=>{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{o.forEach((o=>{t(e,o,n)}))};if(this.resizeObserver=new ResizeObserver((t=>{t.forEach((t=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${t.contentRect.height}px`)}))})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),this.resizeInterval=setInterval((()=>{this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`)}),500),"youtube"===this.site.host&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{t.forEach((t=>{"attributes"===t.type&&"aria-valuenow"===t.attributeName&&this.syncVideoVolumeSlider()}))}));const t=document.querySelector(".ytp-volume-panel");t&&this.syncVolumeObserver.observe(t,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0})}let o;document.addEventListener("click",(t=>{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),c=a.contains(e),u=r?.contains(e)??!1;b.Z.log(`[document click] ${s} ${l} ${d} ${c} ${u}`),s||l||c||u||(d||this.logout(0),this.votMenu.container.hidden=!0)})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".video-element-wrapper-js > div"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimerBound),t(this.votButton.container,"mousemove",this.changeOpacityOnEventBound),t(this.votMenu.container,"mousemove",this.changeOpacityOnEventBound),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEventBound),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),t(this.video,"abort",(()=>{b.Z.log("lipsync mode is abort"),this.stopTranslation(),this.videoData=""})),t(this.video,"progress",(async()=>{if(!this.firstPlay||1!==this.data.autoTranslate)return;const t=(0,S.gJ)(this.site.host,this.video);if(!t)throw new m("VOTNoVideoIDFound");try{await this.translateExecutor(t),this.firstPlay=!1}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t),this.firstPlay=!1}}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer(){clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),2e3)}changeOpacityOnEvent(t){clearTimeout(this.timer),this.logout(1),t.stopPropagation()}async changeSubtitlesLang(t){if(b.Z.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(v.V.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.downloadSubtitlesUrl=null;else{const e=await async function(t){let e=!1,o=await Promise.race([new Promise((async t=>{await(0,S._v)(5e3),e||console.error("[VOT] Failed to fetch subtitles. Reason: timeout"),e=!0,t([])})),new Promise((async o=>{b.Z.log("Fetching subtitles:",t),await fetch(t.url).then((t=>t.json())).then((t=>{e=!0,o(t)})).catch((t=>{console.error("[VOT] Failed to fetch subtitles. Reason:",t),e=!0,o({containsTokens:!1,subtitles:[]})}))}))]);return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^ +| +$/g,""))).join(" ");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(const i of t.subtitles){let a;if(i?.tokens?.length){if("yandex"!==e)return console.warn("[VOT] Unsupported subtitles tokens type: ",e),t.containsTokens=!1,null;a=mt(i)}else a=bt(i,n);n=a[a.length-1],o.push(Object.assign(Object.assign({},i),{tokens:a}))}return t.containsTokens=!0,o}(o,t.source),console.log("[VOT] subtitles:",o),o}(this.subtitlesList.at(parseInt(t)));this.subtitlesWidget.setContent(e),this.votDownloadSubtitlesButton.hidden=!1,this.downloadSubtitlesUrl=this.subtitlesList.at(parseInt(t))?.url}}async updateSubtitlesLangSelect(){const t=[{label:v.V.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(v.V.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${v.V.get("VOTTranslatedFrom")} ${v.V.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${v.V.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){await this.changeSubtitlesLang("disabled");const t=(0,S.gJ)(this.site.host,this.video);if(!t)return console.error(`[VOT] ${v.V.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,void await this.updateSubtitlesLangSelect();this.subtitlesListVideoId!==t&&(this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),this.subtitlesList=await async function(t,e,n){const i="youtube"===t.host?q():[];let a=!1;const r=[...await Promise.race([new Promise((async t=>{await(0,S._v)(5e3),a||console.error("[VOT] Failed get yandex subtitles. Reason: timeout"),a=!0,t([])})),new Promise((i=>{!async function(t,e,n){try{b.Z.log("requestVideoSubtitles");const i=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const a=X(t,e);await i("/video-subtitles/get-subtitles",a,{"Vsubs-Signature":await vt(a),"Sec-Vsubs-Token":gt(!1)},n)}catch(t){console.error("[VOT]",t),n(!1)}}(`${t.url}${e}`,n,((t,e)=>{b.Z.log("[exec callback] Requesting video subtitles"),t||(console.error("[VOT] Failed get yandex subtitles"),a=!0,i([]));const o=tt(e);console.log("[VOT] Subtitles response: ",o);let n=o.subtitles??[];n=n.reduce(((t,e)=>(e.language&&!t.find((t=>{if("yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage)return t}))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),a=!0,i(n)}))}))]),...i].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===S.KQ||e.language===S.KQ))return t.language===S.KQ?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===n?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===n?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}));return console.log("[VOT] subtitles list",r),r}(this.site,t,this.videoData.detectedLanguage),this.subtitlesList?this.subtitlesListVideoId=t:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect())}getVideoVolume(){let t=this.video?.volume;return"youtube"===this.site.host&&(t=F()||t),t}setVideoVolume(t){"youtube"===this.site.host&&z(t)||(this.video.volume=t)}syncVideoVolumeSlider(){const t=Math.round(100*this.getVideoVolume());this.votVideoVolumeSlider.input.value=t,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${t}%`,ut.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(t))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(v.V.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(v.V.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncTranslationWithVideo(t){const e=Number(this.votVideoVolumeSlider.input.value),o=ht(this.video,t,e,this.tempVolume);this.votVideoVolumeSlider.input.value=o,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=`${o}%`,ut.updateSlider(this.votVideoVolumeSlider.input),this.tempOriginalVolume=o,this.tempVolume=t}async getVideoData(){const t={translationHelp:null,isStream:!1};if(t.duration=this.video?.duration||343,t.videoId=(0,S.gJ)(this.site.host,this.video),t.detectedLanguage=this.translateFromLang,t.responseLanguage=this.translateToLang,!t.videoId)return this.ytData={},t;if(window.location.hostname.includes("youtube.com"))this.ytData=await R(),t.isStream=this.ytData.isLive,""!==this.ytData.author&&(t.detectedLanguage=this.ytData.detectedLanguage,t.responseLanguage=this.translateToLang);else if(window.location.hostname.includes("rutube")||window.location.hostname.includes("my.mail.ru"))t.detectedLanguage="ru";else if(window.location.hostname.includes("bilibili.com"))t.detectedLanguage="zh";else if(window.location.hostname.includes("coursera.org")){const e=await xt(this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else if(window.location.hostname.includes("udemy.com")){const e=await Ot(this.data.udemyData,this.translateToLang);t.duration=e.duration||t.duration,t.detectedLanguage=e.detectedLanguage,t.translationHelp=e.translationHelp}else"vk"!==this.site.host&&"piped"!==this.site.host&&"invidious"!==this.site.host&&"bitchute"!==this.site.host&&"rumble"!==this.site.host&&"peertube"!==this.site.host&&"dailymotion"!==this.site.host&&"trovo"!==this.site.host&&"yandexdisk"!==this.site.host||(t.detectedLanguage="auto");return t}videoValidator(){if("youtube"===this.site.host){if(b.Z.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage&&this.videoData.responseLanguage===this.data.dontTranslateLanguage)throw new m("VOTDisableFromYourLang");if(this.videoData.duration>14400)throw new m("VOTVideoIsTooLong")}return!0}lipSync(t=!1){if(b.Z.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!==t)"pause"===t&&(b.Z.log("lipsync mode is pause"),this.audio.pause()),"stop"===t&&(b.Z.log("lipsync mode is stop"),this.audio.pause()),"waiting"===t&&(b.Z.log("lipsync mode is waiting"),this.audio.pause()),"playing"===t&&(b.Z.log("lipsync mode is playing"),this.audio.play());else{b.Z.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",v.V.get("grantPermissionToAutoPlay")),new m("grantPermissionToAutoPlay");if("NotSupportedError"===t.name)throw this.transformBtn("error",Bt.includes(window.location.hostname)?v.V.get("neededAdditionalExtension"):v.V.get("audioFormatNotSupported")),Bt.includes(window.location.hostname)?new m("neededAdditionalExtension"):new m("audioFormatNotSupported")}))}else b.Z.log("lipsync mode is not set")}handleVideoEvent(t){b.Z.log(`video ${t.type}`),this.lipSync(t.type)}stopTraslate(){_t.forEach((t=>this.video.removeEventListener(t,this.handleVideoEventBound))),this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",v.V.get("translateVideo")),this.volumeOnStart&&(b.Z.log(`Volume on start: ${this.volumeOnStart}`),"youtube"===this.site.host?z(this.volumeOnStart):this.video.volume=this.volumeOnStart),clearInterval(this.streamPing),this.hls?.destroy(),this.hls=(0,S.QZ)()}async translateExecutor(t){this.videoData.detectedLanguage||(this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)),b.Z.log("Run videoValidator"),this.videoValidator(),b.Z.log("Run translateFunc"),this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}translateFunc(t,e,n,i,a){console.log("[VOT] Video Data: ",this.videoData);const r=`${this.site.url}${t}`;if(this.videoValidator(),e)return b.Z.log("Executed stream translation"),void function(t,e,n,i){b.Z.log(`Translate stream (url: ${t}, requestLang: ${e}, responseLang: ${n})`),async function(t,e,n,i){try{b.Z.log("requestStreamTranslation");const a=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const r=ot(t,e,n);await a("/stream-translation/translate-stream",r,{"Vtrans-Signature":await vt(r),"Sec-Vtrans-Token":gt(!1)},i)}catch(t){console.error("[VOT]",t),i(!1)}}(t,e,n,((t,e)=>{if(b.Z.log("[exec callback] Requesting stream translation"),!t)return void i(!1,v.V.get("requestTranslationFailed"));const o=nt(e);switch(console.log("[VOT] Stream Translation response: ",o),o.interval){case 10:i(!1,o.interval,v.V.get("translationTakeFewMinutes"));break;case 20:i(!0,o.interval,o||v.V.get("audioNotReceived"));break;case 0:i(!1,o.interval,v.V.get("streamNoConnectionToServer"))}}))}(r,n,i,(async(r,s,l)=>{if(b.Z.log("[exec callback] translateStream callback"),(0,S.gJ)(this.site.host,this.video)!==t)return;if(!r||!l.translatedInfo)return"VOTLocalizedError"===l?.name?this.transformBtn("error",l.localizedMessage):1===this.data.translateAPIErrors&&"ru"!==v.V.lang?(this.transformBtn("error",`${v.V.get("VOTTranslatingError")}...`),this.transformBtn("error",await O(l,"ru",v.V.lang))):this.transformBtn("error",l),void(10===s&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),1e3*s)));this.transformBtn("success",v.V.get("disableTranslate")),console.log(l);const d=l.pingId;b.Z.log(`Stream pingId: ${d}`),this.streamPing=setInterval((async()=>await async function(t,e){try{b.Z.log("requestStreamPing");const n=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const i=et(t);await n("/stream-translation/ping-stream",i,{"Vtrans-Signature":await vt(i),"Sec-Vtrans-Token":gt(!1)},e)}catch(t){console.error("[VOT]",t),e(!1)}}(d,(t=>b.Z.log("Stream ping result: ",t)))),1e3*s),b.Z.log(l.translatedInfo.url);const c=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(l.translatedInfo.url)}`;if(b.Z.log(c),this.hls)this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){b.Z.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t,e){b.Z.log("manifest loaded, found "+e.levels.length+" quality level")})),this.hls.loadSource(c),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t,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()}})),b.Z.log(this.hls);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new m("audioFormatNotSupported");this.audio.src=c}D(this.video,10),this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),this.video.src||this.video.currentSrc||this.video.srcObject?(this.video&&!this.video.paused&&this.lipSync("play"),_t.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ut.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=c):this.stopTranslation()}));if(["udemy","coursera"].includes(this.site.host)&&!a)throw new m("VOTTranslationHelpNull");!function(t,e,n,i,a,r){b.Z.log(`Translate video (url: ${t}, duration: ${e}, requestLang: ${n}, responseLang: ${i})`),b.Z.log("translationHelp:",a),async function(t,e,n,i,a,r){try{b.Z.log("requestVideoTranslation");const s=(await Promise.resolve().then(o.bind(o,"./src/yandexRequest.js"))).default;b.Z.log("Inited yandexRequest...");const l=Q(t,e,n,i,a);await s("/video-translation/translate",l,{"Vtrans-Signature":await vt(l),"Sec-Vtrans-Token":gt(!1)},r)}catch(t){console.error("[VOT]",t),r(!1)}}(t,e,n,i,a,((t,e)=>{if(b.Z.log("[exec callback] Requesting video translation"),!t)return void r(!1,v.V.get("requestTranslationFailed"));const o=J(e);switch(console.log("[VOT] Translation response: ",o),o.status){case 0:r(!1,o.message);break;case 1:r(!!o.url,o.url||v.V.get("audioNotReceived"));break;case 2:r(!1,o.remainingTime?(0,S.PG)(o.remainingTime):v.V.get("translationTakeFewMinutes"));break;case 3:r(!1,v.V.get("videoBeingTranslated"))}}))}(r,this.videoData.duration,n,i,a,(async(o,r)=>{if(b.Z.log("[exec callback] translateVideo callback"),(0,S.gJ)(this.site.host,this.video)!==t)return;if(!o)return"VOTLocalizedError"===r?.name?this.transformBtn("error",r.localizedMessage):1!==this.data.translateAPIErrors||r.includes(v.V.get("translationTake"))||"ru"===v.V.lang?this.transformBtn("error",r):(this.transformBtn("error",v.V.get("VOTTranslatingError")),this.transformBtn("error",await O(r,"ru",v.V.lang))),r.includes(v.V.get("translationTake"))&&(clearTimeout(this.autoRetry),this.autoRetry=setTimeout((()=>this.translateFunc(t,e,n,i,a)),6e4)),void console.error("[VOT]",r);if(this.audio.src=r,this.volumeOnStart=this.getVideoVolume(),"number"==typeof this.data.defaultVolume&&(this.audio.volume=this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume),"twitter"===this.site.host&&document.querySelector('div[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslationBound),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return void this.stopTranslation();const s=["twitch","vimeo","facebook","rutube","twitter","bilibili","mail_ru","rumble","eporner"];for(let t=0;t{t.forEach((t=>{"attributes"===t.type&&"src"===t.attributeName&&t.target===this.video&&""!==t.target.src&&(this.stopTranslation(),this.firstPlay=!0)}))})).observe(this.container,{attributes:!0,childList:!1,subtree:!0,attributeOldValue:!0});break}this.video&&!this.video.paused&&this.lipSync("play"),_t.forEach((t=>this.video.addEventListener(t,this.handleVideoEventBound))),this.transformBtn("success",v.V.get("disableTranslate")),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").innerHTML=100*this.data.autoVolume+"%",ut.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=r}))}stopTranslation(){this.stopTraslate(),this.syncVideoVolumeSlider()}async waitInitialization(){let t=!1;return await Promise.race([new Promise((async e=>{await(0,S._v)(1e3),t||console.error("[VOT] Initialization timeout"),t=!0,e(!1)})),new Promise((async e=>{for(;!this.initialized;)await(0,S._v)(100);t=!0,e(!0)}))])}async handleSrcChanged(){if(b.Z.log("[VideoHandler] src changed",this),!await this.waitInitialization())return;this.stopTranslation(),this.videoData=await this.getVideoData(),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await this.updateSubtitles(),await this.changeSubtitlesLang("disabled"),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru"}async release(){b.Z.log("[VideoHandler] release"),await this.waitInitialization()&&(this.initialized=!1,this.stopTranslation(),this.releaseExtraEvents(),this.subtitlesWidget.release(),this.srcObserver.disconnect(),clearInterval(this.srcObjectInterval),this.votButton.container.remove(),this.votMenu.container.remove())}}const Rt=new class{constructor(){this.onVideoAdded=new Pt,this.onVideoRemoved=new Pt,this.handleVideoAddedBound=this.handleVideoAdded.bind(this),this.handleVideoRemovedBound=this.handleVideoRemoved.bind(this),this.observer=new MutationObserver((t=>{window.requestIdleCallback((()=>{t.forEach((t=>{"childList"===t.type&&(Et(t.addedNodes).forEach(this.handleVideoAddedBound),Et(t.removedNodes).forEach(this.handleVideoRemovedBound))}))}),{timeout:1e3})}))}enable(){this.observer.observe(document,{childList:!0,subtree:!0}),document.querySelectorAll("video").forEach(this.handleVideoAddedBound)}disable(){this.observer.disconnect()}handleVideoAdded(t){this.onVideoAdded.dispatch(t)}handleVideoRemoved(t){document.contains(t)||this.onVideoRemoved.dispatch(t)}},zt=new WeakMap;(async function(){if(b.Z.log("Loading extension..."),await v.V.update(),b.Z.log(`Selected menu language: ${v.V.lang}`),GM_info?.scriptHandler&&x.includes(GM_info.scriptHandler))return console.error(`[VOT] ${v.V.getDefault("unSupportedExtensionError").format(GM_info.scriptHandler)}`),alert(`[VOT] ${v.V.get("unSupportedExtensionError").format(GM_info.scriptHandler)}`);b.Z.log("Extension compatibility passed..."),Rt.onVideoAdded.addListener((t=>{for(const e of Ct.filter((t=>{const e=t=>t instanceof RegExp&&t.test(window.location.hostname)||"string"==typeof t&&window.location.hostname.includes(t)||"function"==typeof t&&t(new URL(window.location));return!!(e(t.match)||t.match instanceof Array&&t.match.some((t=>e(t))))&&t.host&&t.url}))){if(!e)continue;let o;if(e.shadowRoot)o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.shadowRoot.contains(t))):t.parentElement,o=o&&o.shadowRoot?o.parentElement:o;else{const n=At.browser.version.split(".")?.[0];if(e.selector?.includes(":not")&&e.selector?.includes("*")&&n&&("Chrome"===At.browser.name&&Number(n)<88||"Firefox"===At.browser.name&&Number(n)<84)){const n=e.selector?.split(" *")?.[0];o=n?Object.values(document.querySelectorAll(n)).find((e=>e.contains(t))):t.parentElement}else o=e.selector?Object.values(document.querySelectorAll(e.selector)).find((e=>e.contains(t))):t.parentElement}if(o&&!("rumble"===e.host&&o.querySelector("vot-block")||("peertube"===e.host&&(e.url=window.location.origin),zt.has(t)))){zt.set(t,new qt(t,o,e));break}}})),Rt.onVideoRemoved.addListener((async t=>{zt.has(t)&&(await zt.get(t).release(),zt.delete(t))})),Rt.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file diff --git a/dist/vot.user.js b/dist/vot.user.js index ad323cd0..40fac83e 100644 --- a/dist/vot.user.js +++ b/dist/vot.user.js @@ -13,7 +13,7 @@ // @description:it Una piccola estensione che aggiunge la traduzione vocale del video dal browser Yandex ad altri browser // @description:ru Небольшое расширение, которое добавляет закадровый перевод видео из Яндекс Браузера в другие браузеры // @description:zh 一个小扩展,它增加了视频从Yandex浏览器到其他浏览器的画外音翻译 -// @version 1.5.0.1 +// @version 1.5.0.2 // @author sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD // @supportURL https://github.com/ilyhalight/voice-over-translation/issues // @match *://*.youtube.com/* @@ -594,7 +594,7 @@ __webpack_require__.d(__webpack_exports__, { }); ;// CONCATENATED MODULE: ./src/localization/locales/en.json -const en_namespaceObject = JSON.parse('{"__version__":2,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTFailedInitDB":"Failed to initialize database","VOTDBNeedUpdate":"The database needs an update, please reload the page","VOTDisabledForDBUpdating":"VOT is disabled due to an error when updating the Database. Close all open tabs with {0} and try again","VOTFailedWriteToDB":"Data could not be written to the database","VOTFailedReadFromDB":"Data could not be retrieved from the database","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","VOTCloudflareDoesntSupportStreams":"The Cloudflare version of the script does not support stream translation","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}'); +const en_namespaceObject = JSON.parse('{"__version__":3,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","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","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","neededAdditionalExtension":"An additional extension is needed to support this site","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not 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","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","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"},"udemyAccessTokenExpired":"Your entered Udemy Access Token has expired","udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","enterUdemyAccessToken":"Enter Udemy Access Token","VOTUdemyData":"Udemy Data","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings"}'); // EXTERNAL MODULE: ./src/utils/debug.js var debug = __webpack_require__("./src/utils/debug.js"); // EXTERNAL MODULE: ./src/utils/storage.js @@ -1722,17 +1722,24 @@ async function getLanguage(player, response, title, description) { } // If there is no caption track, use detect to get the language code from the description + + const deletefilter = [ + /https?:\/\/\S+/g, // remove links + /Auto-generated by YouTube/g, + /Provided to YouTube by/g, + /Released on/g, + ]; + const cleanedDescription = description .split("\n") - .filter((line) => !line.match(/https?:\/\/\S+/)) + .filter((line) => !deletefilter.some((regex) => regex.test(line))) .join("\n") - .replace(/#\S+/g, "") - .replace(/[^\p{L}\s]/gu, "") - .replace(/\s+/g, " ") + .replace(/[^\p{L}\s]/gu, " ") .trim() + .replace(/\s+/g, " ") .slice(0, 250); - const cleanText = [cleanedDescription, title].join(""); + const cleanText = [cleanedDescription, title].join(" "); return await detect(cleanText); } diff --git a/src/headers.json b/src/headers.json index f88e58ed..167603ad 100644 --- a/src/headers.json +++ b/src/headers.json @@ -1,7 +1,7 @@ { "name": "[VOT] - Voice Over Translation", "description": "A small extension that adds a Yandex Browser video translation to other browsers", - "version": "1.5.0.1", + "version": "1.5.0.2", "author": "sodapng, mynovelhost, Toil, SashaXser, MrSoczekXD", "namespace": "vot", "icon": "https://translate.yandex.ru/icons/favicon.ico",